commit
a2092c5cfb
9 changed files with 102905 additions and 84 deletions
|
@ -43,7 +43,7 @@ int OnUpdate(MarDirector* director) {
|
|||
}
|
||||
|
||||
// If no dpad buttons are pressed, reset laststate
|
||||
if (!(ControllerOne-> buttons & (PRESS_DU | PRESS_DL | PRESS_DR | PRESS_DD)))
|
||||
if (!(ControllerOne->buttons & (PRESS_DU | PRESS_DL | PRESS_DR | PRESS_DD)))
|
||||
laststate = 0;
|
||||
|
||||
//If item was assigned, set it up
|
||||
|
|
13
ports/pal/build.bat
Normal file
13
ports/pal/build.bat
Normal file
|
@ -0,0 +1,13 @@
|
|||
C:\devkitPro\devkitPPC\bin\powerpc-eabi-gcc.exe %1 -S -o %~n1.s -O1 -std=c99
|
||||
C:\devkitPro\devkitPPC\bin\powerpc-eabi-gcc.exe %1 -c -o %~n1.o -O1 -std=c99
|
||||
if ERRORLEVEL 1 pause
|
||||
if ERRORLEVEL 1 exit
|
||||
C:\devkitPro\devkitPPC\bin\powerpc-eabi-ld.exe -Os -T linker -T smsFuncs -o obj_%~n1.o %~n1.o -Map %~n1.map
|
||||
if ERRORLEVEL 1 pause
|
||||
if ERRORLEVEL 1 exit
|
||||
C:\devkitPro\devkitPPC\bin\powerpc-eabi-objdump.exe obj_%~n1.o --full-content
|
||||
if ERRORLEVEL 1 pause
|
||||
if ERRORLEVEL 1 exit
|
||||
C:\devkitPro\devkitPPC\bin\powerpc-eabi-objcopy.exe obj_%~n1.o %~n1.bin -O binary -R .eh_frame -R .comment -R .sdata -R .gnu.attributes -g -S
|
||||
bin2gecko.exe %~n1.bin -m %~n1.map -c OnUpdate:0x8029e070:3 -c OnSetup:0x80291750:0 -c OnDraw2D:0x80138b50:0 -c OnWaterHitsGround:0x80277568:0 -c OnObjectTouchMario:0x801a81b4:3 -c OnAllNPCsUpdate:0x8003e140:0 -c OnSmallEnemyHitMario:0x80065e0c:3 -r OnEMarioControl:0x8003ff5c -r IsMario:0x80245898
|
||||
pause
|
121
ports/pal/dollinker
Normal file
121
ports/pal/dollinker
Normal file
|
@ -0,0 +1,121 @@
|
|||
__destroy_global_chain = 0x8032ff40;
|
||||
__register_global_object = 0x8032ff88;
|
||||
__destroy_new_array = 0x8032ffa0;
|
||||
__destroy_arr = 0x8033001c;
|
||||
__construct_array = 0x80330094;
|
||||
__dt__26__partial_array_destructorFv = 0x80330194;
|
||||
__construct_new_array = 0x8033024c;
|
||||
__ptmf_test = 0x80330354;
|
||||
__ptmf_scall = 0x80330384;
|
||||
__unregister_fragment = 0x803303ac;
|
||||
__register_fragment = 0x803303e0;
|
||||
__cvt_fp2unsigned = 0x8033041c;
|
||||
exit = 0x80330af8;
|
||||
rand = 0x80333324;
|
||||
srand = 0x8033331c;
|
||||
long2str = 0x80332c20;
|
||||
longlong2str = 0x80332940;
|
||||
round_decimal = 0x8033280c;
|
||||
float2str = 0x803321d4;
|
||||
toupper = 0x803310bc;
|
||||
tolower = 0x803310e4;
|
||||
__num2dec = 0x80330c04;
|
||||
__flush_buffer = 0x80330fb8;
|
||||
__prep_buffer = 0x80331084;
|
||||
__kill_critical_regions = 0x803310b8;
|
||||
__div2u = 0x80330478;
|
||||
__div2i = 0x80330564;
|
||||
__mod2u = 0x8033069c;
|
||||
__mod2i = 0x80330780;
|
||||
__shl2i = 0x8033088c;
|
||||
__shr2u = 0x803308b0;
|
||||
__shr2i = 0x803308d4;
|
||||
__cvt_sll_flt = 0x803308fc;
|
||||
__cvt_dbl_usll = 0x803309b0;
|
||||
GetR2__Fv = 0x80330a7c;
|
||||
__fini_cpp_exceptions = 0x80330a84;
|
||||
__init_cpp_exceptions = 0x80330ab8;
|
||||
fwrite = 0x8033110c;
|
||||
wcstombs = 0x803313e8;
|
||||
memcmp = 0x80331424;
|
||||
memchr = 0x80331468;
|
||||
memmove = 0x80331494;
|
||||
__copy_longs_rev_unaligned = 0x80331570;
|
||||
__copy_longs_unaligned = 0x80331620;
|
||||
__copy_longs_rev_aligned = 0x803316e4;
|
||||
__copy_longs_aligned = 0x80331790;
|
||||
__stdio_atexit = 0x8033184c;
|
||||
sprintf = 0x80331850;
|
||||
snprintf = 0x80331924;
|
||||
vsnprintf = 0x803319f4;
|
||||
vprintf = 0x80331a64;
|
||||
__StringWrite = 0x80331ae0;
|
||||
__FileWrite = 0x80331b4c;
|
||||
__pformatter = 0x80331ba4;
|
||||
parse_format = 0x80332e44;
|
||||
__StringRead = 0x80333348;
|
||||
strstr = 0x803333d8;
|
||||
strrchr = 0x80333444;
|
||||
strchr = 0x8033348c;
|
||||
strcmp = 0x803334bc;
|
||||
strcat = 0x803335e0;
|
||||
strncpy = 0x8033360c;
|
||||
strcpy = 0x80333650;
|
||||
strlen = 0x80333704;
|
||||
strtol = 0x80333724;
|
||||
strtoul = 0x80333814;
|
||||
__strtoul = 0x803338c0;
|
||||
__close_console = 0x80333c08;
|
||||
__write_console = 0x80333c10;
|
||||
__read_console = 0x80333ca8;
|
||||
fwide = 0x80333d88;
|
||||
fabs__Fd = 0x80333e08;
|
||||
__ieee754_atan2 = 0x80333e10;
|
||||
atan = 0x803340a8;
|
||||
frexp = 0x803342e8;
|
||||
atan2 = 0x80334384;
|
||||
fabsf__Ff = 0x803343a4;
|
||||
atanf = 0x803343ac;
|
||||
atan__Ff = 0x803345a0;
|
||||
_inv_sqrtf = 0x803345c0;
|
||||
acosf = 0x80334630;
|
||||
atan2f = 0x80334674;
|
||||
tanf = 0x8033474c;
|
||||
cos__Ff = 0x80334790;
|
||||
sin__Ff = 0x803347b0;
|
||||
cosf = 0x803347d0;
|
||||
sinf = 0x80334964;
|
||||
__sinit_trigf_c = 0x80334b08;
|
||||
powf = 0x80334b38;
|
||||
expf = 0x80335278;
|
||||
memset = 0x80003100;
|
||||
__fill_mem = 0x80003130;
|
||||
memcpy = 0x800031f4;
|
||||
__nw__FUl = 0x802bbc38;
|
||||
__nw__FUli = 0x802bbc80;
|
||||
__nwa__FUl = 0x802bbd38;
|
||||
__nwa__FUli = 0x802bbd80;
|
||||
__dl__FPv = 0x802bbe38;
|
||||
__dla__FPv = 0x802bbe9c;
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
. = 0x80417800;
|
||||
.text :
|
||||
{
|
||||
*(.text)
|
||||
}
|
||||
.rodata :
|
||||
{
|
||||
*(.rodata*)
|
||||
}
|
||||
.data :
|
||||
{
|
||||
*(.data)
|
||||
}
|
||||
. += 0x08;
|
||||
.sdata :
|
||||
{
|
||||
*(.sdata)
|
||||
}
|
||||
}
|
121
ports/pal/linker
Normal file
121
ports/pal/linker
Normal file
|
@ -0,0 +1,121 @@
|
|||
__destroy_global_chain = 0x8032ff40;
|
||||
__register_global_object = 0x8032ff88;
|
||||
__destroy_new_array = 0x8032ffa0;
|
||||
__destroy_arr = 0x8033001c;
|
||||
__construct_array = 0x80330094;
|
||||
__dt__26__partial_array_destructorFv = 0x80330194;
|
||||
__construct_new_array = 0x8033024c;
|
||||
__ptmf_test = 0x80330354;
|
||||
__ptmf_scall = 0x80330384;
|
||||
__unregister_fragment = 0x803303ac;
|
||||
__register_fragment = 0x803303e0;
|
||||
__cvt_fp2unsigned = 0x8033041c;
|
||||
exit = 0x80330af8;
|
||||
rand = 0x80333324;
|
||||
srand = 0x8033331c;
|
||||
long2str = 0x80332c20;
|
||||
longlong2str = 0x80332940;
|
||||
round_decimal = 0x8033280c;
|
||||
float2str = 0x803321d4;
|
||||
toupper = 0x803310bc;
|
||||
tolower = 0x803310e4;
|
||||
__num2dec = 0x80330c04;
|
||||
__flush_buffer = 0x80330fb8;
|
||||
__prep_buffer = 0x80331084;
|
||||
__kill_critical_regions = 0x803310b8;
|
||||
__div2u = 0x80330478;
|
||||
__div2i = 0x80330564;
|
||||
__mod2u = 0x8033069c;
|
||||
__mod2i = 0x80330780;
|
||||
__shl2i = 0x8033088c;
|
||||
__shr2u = 0x803308b0;
|
||||
__shr2i = 0x803308d4;
|
||||
__cvt_sll_flt = 0x803308fc;
|
||||
__cvt_dbl_usll = 0x803309b0;
|
||||
GetR2__Fv = 0x80330a7c;
|
||||
__fini_cpp_exceptions = 0x80330a84;
|
||||
__init_cpp_exceptions = 0x80330ab8;
|
||||
fwrite = 0x8033110c;
|
||||
wcstombs = 0x803313e8;
|
||||
memcmp = 0x80331424;
|
||||
memchr = 0x80331468;
|
||||
memmove = 0x80331494;
|
||||
__copy_longs_rev_unaligned = 0x80331570;
|
||||
__copy_longs_unaligned = 0x80331620;
|
||||
__copy_longs_rev_aligned = 0x803316e4;
|
||||
__copy_longs_aligned = 0x80331790;
|
||||
__stdio_atexit = 0x8033184c;
|
||||
sprintf = 0x80331850;
|
||||
snprintf = 0x80331924;
|
||||
vsnprintf = 0x803319f4;
|
||||
vprintf = 0x80331a64;
|
||||
__StringWrite = 0x80331ae0;
|
||||
__FileWrite = 0x80331b4c;
|
||||
__pformatter = 0x80331ba4;
|
||||
parse_format = 0x80332e44;
|
||||
__StringRead = 0x80333348;
|
||||
strstr = 0x803333d8;
|
||||
strrchr = 0x80333444;
|
||||
strchr = 0x8033348c;
|
||||
strcmp = 0x803334bc;
|
||||
strcat = 0x803335e0;
|
||||
strncpy = 0x8033360c;
|
||||
strcpy = 0x80333650;
|
||||
strlen = 0x80333704;
|
||||
strtol = 0x80333724;
|
||||
strtoul = 0x80333814;
|
||||
__strtoul = 0x803338c0;
|
||||
__close_console = 0x80333c08;
|
||||
__write_console = 0x80333c10;
|
||||
__read_console = 0x80333ca8;
|
||||
fwide = 0x80333d88;
|
||||
fabs__Fd = 0x80333e08;
|
||||
__ieee754_atan2 = 0x80333e10;
|
||||
atan = 0x803340a8;
|
||||
frexp = 0x803342e8;
|
||||
atan2 = 0x80334384;
|
||||
fabsf__Ff = 0x803343a4;
|
||||
atanf = 0x803343ac;
|
||||
atan__Ff = 0x803345a0;
|
||||
_inv_sqrtf = 0x803345c0;
|
||||
acosf = 0x80334630;
|
||||
atan2f = 0x80334674;
|
||||
tanf = 0x8033474c;
|
||||
cos__Ff = 0x80334790;
|
||||
sin__Ff = 0x803347b0;
|
||||
cosf = 0x803347d0;
|
||||
sinf = 0x80334964;
|
||||
__sinit_trigf_c = 0x80334b08;
|
||||
powf = 0x80334b38;
|
||||
expf = 0x80335278;
|
||||
memset = 0x80003100;
|
||||
__fill_mem = 0x80003130;
|
||||
memcpy = 0x800031f4;
|
||||
__nw__FUl = 0x802bbc38;
|
||||
__nw__FUli = 0x802bbc80;
|
||||
__nwa__FUl = 0x802bbd38;
|
||||
__nwa__FUli = 0x802bbd80;
|
||||
__dl__FPv = 0x802bbe38;
|
||||
__dla__FPv = 0x802bbe9c;
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
. = 0x817fa000;
|
||||
.text :
|
||||
{
|
||||
*(.text)
|
||||
}
|
||||
.rodata :
|
||||
{
|
||||
*(.rodata*)
|
||||
}
|
||||
.data :
|
||||
{
|
||||
*(.data)
|
||||
}
|
||||
. += 0x08;
|
||||
.sdata :
|
||||
{
|
||||
*(.sdata)
|
||||
}
|
||||
}
|
101930
ports/pal/marioEU.map
Normal file
101930
ports/pal/marioEU.map
Normal file
File diff suppressed because it is too large
Load diff
13
ports/pal/patchdol.bat
Normal file
13
ports/pal/patchdol.bat
Normal file
|
@ -0,0 +1,13 @@
|
|||
C:\devkitPro\devkitPPC\bin\powerpc-eabi-gcc.exe %1 -S -o %~n1.s -O1 -std=c99 -w
|
||||
C:\devkitPro\devkitPPC\bin\powerpc-eabi-gcc.exe %1 -c -o %~n1.o -O1 -std=c99 -w
|
||||
if ERRORLEVEL 1 pause
|
||||
if ERRORLEVEL 1 exit
|
||||
C:\devkitPro\devkitPPC\bin\powerpc-eabi-ld.exe -Os -T dollinker -T smsFuncs -o obj_%~n1.o %~n1.o -Map %~n1.map
|
||||
if ERRORLEVEL 1 pause
|
||||
if ERRORLEVEL 1 exit
|
||||
C:\devkitPro\devkitPPC\bin\powerpc-eabi-objdump.exe obj_%~n1.o --full-content
|
||||
if ERRORLEVEL 1 pause
|
||||
if ERRORLEVEL 1 exit
|
||||
C:\devkitPro\devkitPPC\bin\powerpc-eabi-objcopy.exe obj_%~n1.o %~n1.bin -O binary -R .eh_frame -R .comment -R .gnu.attributes -g -S
|
||||
DolInsert.exe %~n1.bin -m %~n1.map -dol ./Start.dol -o %~n1.dol -c OnUpdate:0x8029e070:3 -c OnSetup:0x80291750:0 -c OnDraw2D:0x80138b50:0 -c OnWaterHitsGround:0x80277568:0 -c OnObjectTouchMario:0x801a81b4:3 -c OnAllNPCsUpdate:0x8003e140:0 -c OnSmallEnemyHitMario:0x80065e0c:3 -r EMarioControl:0x8003ff5c -r IsMario:0x80245898 -r EMarioReceiveMessage:0x80039624 -r MarioSendMessage:0x8026b5fc -r EMarioPlayerControl:0x8003febc -c OnMarioIncHP:0x8027ac6c:0x8027ac90:0x8027ad10:0x8027b1a0:0x8027b21c:0x8027b260:0 -c OnMarioDecHP:0x8023a89c:0 -r EMarioDamageExec:0x8003feb8 -r IsMultiplayerMap:0x802a0bd8
|
||||
pause
|
546
ports/pal/sms.h
Normal file
546
ports/pal/sms.h
Normal file
|
@ -0,0 +1,546 @@
|
|||
#ifndef SMS_H
|
||||
#define SMS_H
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdint.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
#define PRESS_START 0x1000
|
||||
#define PRESS_B 0x0200
|
||||
#define PRESS_A 0x0100
|
||||
#define PRESS_Z 0x0010
|
||||
#define PRESS_X 0x0400
|
||||
#define PRESS_Y 0x0800
|
||||
#define PRESS_DU 0x0008
|
||||
#define PRESS_DD 0x0004
|
||||
#define PRESS_DL 0x0001
|
||||
#define PRESS_DR 0x0002
|
||||
|
||||
#define MARIOFLAG_ALIVE 0x00000001
|
||||
#define MARIOFLAG_INVISIBLE 0x00000004
|
||||
#define MARIOFLAG_ALLDEAD 0x00000F00
|
||||
#define MARIOFLAG_GAMEOVER 0x00000400
|
||||
#define MARIOFLAG_SLIP 0x00000080
|
||||
#define MARIOFLAG_HASHELMET_FOLLOWCAMERA 0x00001000
|
||||
#define MARIOFLAG_HASHELMET 0x00002000
|
||||
#define MARIOFLAG_HASFLUDD 0x00008000
|
||||
#define MARIOFLAG_SPLASH 0x00010000
|
||||
#define MARIOFLAG_PUDDLE 0x00020000
|
||||
#define MARIOFLAG_SHIRT 0x00100000
|
||||
#define MARIOFLAG_GONE 0x00200000
|
||||
|
||||
#define STATE_NUMBER 0x0000000F
|
||||
#define STATE_AIRBORN 0x00000800
|
||||
#define STATE_CUTSCENE 0x00001000
|
||||
#define STATE_STUNNED 0x00002000
|
||||
|
||||
#define STATE_RUNNING 0x04000440
|
||||
#define STATE_IDLE 0x0C400200
|
||||
#define STATE_SPIN 0x00000441
|
||||
#define STATE_JUMPSPIN1 0x00000895
|
||||
#define STATE_JUMPSPIN2 0x00000896
|
||||
#define STATE_JUMP 0x02000880
|
||||
#define STATE_JUMPSIDE 0x00000880
|
||||
#define STATE_SIDESTEP 0x0C008220
|
||||
#define STATE_SWIM 0x000024D7
|
||||
#define STATE_DIVE 0x0080088A
|
||||
#define STATE_DIVEJUMP 0x02000889
|
||||
#define STATE_DIVESLIDE 0x00800456
|
||||
#define STATE_CLIMB 0x18100340
|
||||
#define STATE_CLIMBUP 0x10100343
|
||||
#define STATE_WALLJUMP 0x02000886
|
||||
#define STATE_WALLSLIDE 0x000008A7
|
||||
#define STATE_HANG 0x3800034B
|
||||
#define STATE_HANGCLIMB 0x3000054F
|
||||
#define STATE_SLAMSTART 0x008008A9
|
||||
#define STATE_SLAM 0x0080023C
|
||||
#define STATE_SPRAY 0x0C008220
|
||||
#define STATE_THROWN 0x000208B8
|
||||
#define STATE_HOVER 0x0000088B
|
||||
#define STATE_STUCK 0x0002033C
|
||||
#define STATE_TALKING 0x10001308
|
||||
|
||||
typedef struct{
|
||||
uint16_t buttons;
|
||||
int8_t lanalogx;
|
||||
int8_t lanalogy;
|
||||
int8_t ranalogx;
|
||||
int8_t ranalogy;
|
||||
uint16_t u1;
|
||||
uint8_t status;
|
||||
uint8_t u2;
|
||||
uint8_t u3;
|
||||
uint8_t u4;
|
||||
} __attribute__((packed)) Controller;
|
||||
|
||||
typedef struct{
|
||||
void* type;
|
||||
void* u1[55];
|
||||
int u2;
|
||||
int u3[7];
|
||||
} MarioGamePad;
|
||||
|
||||
// MarDirector* mardirector = (MarDirector*)(r13 + 0x9FB8)
|
||||
typedef struct{
|
||||
int u1;
|
||||
} MarDirector;
|
||||
|
||||
typedef struct{
|
||||
float x;
|
||||
float y;
|
||||
float z;
|
||||
} Vector;
|
||||
|
||||
typedef struct{
|
||||
void* Type;
|
||||
void* u2;
|
||||
int u3;
|
||||
int u4;
|
||||
Vector position;
|
||||
int u5;
|
||||
void* u6;
|
||||
Vector scale;
|
||||
Vector direction;
|
||||
void* u7;
|
||||
void* u8;
|
||||
void* u9;
|
||||
int u10;
|
||||
int collision;
|
||||
float u12;
|
||||
float u13;
|
||||
float u14;
|
||||
float u15;
|
||||
float u16;
|
||||
int u17;
|
||||
int u18;
|
||||
int u19;
|
||||
void* u20;
|
||||
} HitActor;
|
||||
|
||||
typedef struct{
|
||||
void* Type; //0
|
||||
void* u2;
|
||||
int u3;
|
||||
int u4;
|
||||
Vector position; //10
|
||||
int u5;
|
||||
void* u6; //20
|
||||
Vector scale;
|
||||
Vector direction; //30
|
||||
void* u7;
|
||||
void* u8; //40
|
||||
void* collist;
|
||||
uint16_t colcount;
|
||||
uint16_t u9;
|
||||
int colsettings;
|
||||
float u12; //50
|
||||
float u13;
|
||||
float u14;
|
||||
float u15;
|
||||
float u16; //60
|
||||
int u17;
|
||||
int u18;
|
||||
int u19;
|
||||
void* u20; //70
|
||||
int u21;
|
||||
int u22;
|
||||
uint32_t status;
|
||||
uint32_t laststatus;//80
|
||||
int statustime;
|
||||
void* u23[36]; //88
|
||||
int flags; //118
|
||||
void* u24[64];
|
||||
char name[16]; //218
|
||||
void* u25[180]; //228
|
||||
MarioGamePad* gamepad; //4fc
|
||||
} MarioActor;
|
||||
|
||||
struct EMario_t;
|
||||
struct EnemyMario_t;
|
||||
|
||||
typedef struct EnemyMario_t{
|
||||
void* Type; //0
|
||||
void* u2;
|
||||
int u3;
|
||||
int u4;
|
||||
Vector position; //10
|
||||
int u5;
|
||||
void* u6; //20
|
||||
Vector scale;
|
||||
Vector direction; //30
|
||||
void* u7;
|
||||
void* u8; //40
|
||||
void* collist;
|
||||
uint16_t colcount;
|
||||
uint16_t u9;
|
||||
int colsettings;
|
||||
float u12; //50
|
||||
float u13;
|
||||
float u14;
|
||||
float u15;
|
||||
float u16; //60
|
||||
int u17;
|
||||
int u18;
|
||||
int u19;
|
||||
void* u20; //70
|
||||
int u21;
|
||||
int u22;
|
||||
uint32_t status;
|
||||
uint32_t laststatus;//80
|
||||
int statustime;
|
||||
void* u23[36]; //88
|
||||
int flags; //118
|
||||
void* u24[64];
|
||||
char name[16]; //218
|
||||
void* u25[180]; //228
|
||||
MarioGamePad* gamepad; //4fc
|
||||
void* u26[3940];
|
||||
uint16_t emarioflags;
|
||||
uint16_t emariodamage; //4294
|
||||
uint16_t emariohealth; //4296
|
||||
uint16_t u27; //4298
|
||||
int u28;
|
||||
int u29;
|
||||
struct EMario_t* emario;
|
||||
int u30;
|
||||
int u31;
|
||||
float u32;
|
||||
float u33;
|
||||
uint16_t u34;
|
||||
uint16_t u35;
|
||||
uint16_t u36;
|
||||
uint16_t hpmetertimer;
|
||||
} __attribute__((packed)) EnemyMario;
|
||||
|
||||
typedef struct EMario_t{
|
||||
void* Type; //0
|
||||
void* u2;
|
||||
int u3;
|
||||
int u4;
|
||||
Vector position; //10
|
||||
int u5;
|
||||
void* u6; //20
|
||||
Vector scale;
|
||||
Vector direction; //30
|
||||
void* u7;
|
||||
void* u8; //40
|
||||
void* collist;
|
||||
uint16_t colcount;
|
||||
uint16_t u9;
|
||||
int colsettings;
|
||||
float u12; //50
|
||||
float u13;
|
||||
float u14;
|
||||
float u15;
|
||||
float u16; //60
|
||||
int u17;
|
||||
int u18;
|
||||
int u19;
|
||||
void* u20; //70
|
||||
void* u21[55];
|
||||
EnemyMario* enemymario;
|
||||
} __attribute__((packed)) EMario;
|
||||
|
||||
#define ITEMFLAG_STATIC 0x00000010
|
||||
|
||||
typedef struct{
|
||||
void* Type;
|
||||
void* u2;
|
||||
int u3;
|
||||
int u4;
|
||||
Vector position;
|
||||
int u5;
|
||||
void* u6;
|
||||
Vector scale;
|
||||
Vector direction;
|
||||
void* u7;
|
||||
void* u8;
|
||||
void* u9;
|
||||
int u10;
|
||||
int itemtype;
|
||||
float u12;
|
||||
float u13;
|
||||
float u14;
|
||||
float u15;
|
||||
float u16;
|
||||
int u17;
|
||||
int u18;
|
||||
int u19;
|
||||
void* u20;
|
||||
//0x74
|
||||
int pad1[14];
|
||||
Vector velocity;
|
||||
int pad2[14];
|
||||
int flags;
|
||||
} ItemActor;
|
||||
|
||||
typedef struct {
|
||||
int u1;
|
||||
float u2;
|
||||
} Sound;
|
||||
|
||||
typedef struct {
|
||||
int x1;
|
||||
int y1;
|
||||
int x2;
|
||||
int y2;
|
||||
} JUTRect;
|
||||
typedef struct {
|
||||
void* type;
|
||||
int content[64];
|
||||
} J2DGrafContext;
|
||||
typedef struct {
|
||||
void* type;
|
||||
int content[64];
|
||||
} J2DOrthoGraph;
|
||||
typedef struct {
|
||||
void* type;
|
||||
int content[9];
|
||||
} J2DPrint;
|
||||
typedef struct {
|
||||
void* type;
|
||||
} JUTResFont;
|
||||
typedef struct {
|
||||
} ResFONT;
|
||||
typedef struct {
|
||||
void* type;
|
||||
int pad1[2];
|
||||
int flags;
|
||||
JUTRect bounds;
|
||||
int content[100];
|
||||
} J2DTextBox;
|
||||
typedef struct {
|
||||
void* type;
|
||||
int content[64];
|
||||
} J2DPane;
|
||||
typedef struct {
|
||||
void* type;
|
||||
int content[64];
|
||||
} J2DScreen;
|
||||
typedef struct {
|
||||
void* type;
|
||||
} Talk2D;
|
||||
typedef struct {
|
||||
void* type;
|
||||
} GCConsole;
|
||||
typedef struct {
|
||||
void* type;
|
||||
} PollutionManager;
|
||||
typedef struct {
|
||||
void* type;
|
||||
} ItemManager;
|
||||
typedef struct {
|
||||
void* type;
|
||||
void* u1;
|
||||
int flags1;
|
||||
int flags2;
|
||||
int timer;
|
||||
} TrembleModelEffect;
|
||||
typedef struct {
|
||||
float a1[4];
|
||||
float a2[4];
|
||||
float a3[4];
|
||||
} A3_A4_f;
|
||||
|
||||
//For C++ inheritence
|
||||
#define GetObjectFunction( object, func ) (void*)*(void**)((int)*(int*)object + func)
|
||||
#define Director_GameUpdate 0x64
|
||||
#define HitActor_TouchPlayer 0x0148
|
||||
#define HitActor_ReceiveMessage 0xA0
|
||||
|
||||
//Free is done automatically on stage transition
|
||||
#define malloc(n) __nwa__FUl((n))
|
||||
#define free(n) __dla__FUl((n))
|
||||
|
||||
void GXSetScissor(int x, int y, int x2, int y2);
|
||||
void GXInvalidateTexAll();
|
||||
|
||||
void J2DOrthoGraph_Create(J2DOrthoGraph* targetaddr, JUTRect* view);
|
||||
|
||||
void J2DGrafContext_Setup2D(J2DGrafContext* graphics);
|
||||
|
||||
void J2DPrint_Create(J2DPrint* targetaddr, JUTResFont* font, int u);
|
||||
float J2DPrint_GetWidth(J2DPrint* j2dprint, char* text);
|
||||
void J2DPrint_Initiate(J2DPrint* j2dprint);
|
||||
void J2DPrint_Print(J2DPrint* j2dprint, int x, int y, char* text, int u1, int u2, int u3);
|
||||
void J2DPrint_Delete(J2DPrint* j2dprint, int mask);
|
||||
|
||||
#define GameFont (*(ResFONT**)((*(int*)(SceneReference - 0x6110)) + 0x48))
|
||||
#define GameStrTable (RTOC - 0x4BC4)
|
||||
void J2DTextBox_Create(J2DTextBox* targetaddr, int u1, JUTRect* bounds, ResFONT* font, void* table, int HBinding, int VBinding);
|
||||
void J2DTextBox_Draw(J2DTextBox* textbox);
|
||||
void J2DTextBox_Drawii(J2DTextBox* textbox, int a1, int a2);
|
||||
void J2DTextBox_DrawSelf(J2DTextBox* textbox, int a1, int a2, A3_A4_f* matrix);
|
||||
void J2DTextBox_SetString(J2DTextBox* textbox, char* string);
|
||||
char* J2DTextBox_GetStringPtr(J2DTextBox* textbox);
|
||||
void J2DTextBox_Delete(J2DTextBox* textbox);
|
||||
|
||||
void J2DPane_Draw(J2DPane* pane, int a1, int a2, J2DGrafContext* graphics, int a3);
|
||||
void J2DPane_SetBasePosition(J2DPane* pane, int pos);
|
||||
void J2DPane_MakeMatrix(J2DPane* pane, int a1, int a2);
|
||||
|
||||
void J2DScreen_Draw(J2DScreen* pane, int a1, int a2, J2DGrafContext* graphics, int a3);
|
||||
|
||||
void JUTRect_Set(JUTRect* rect, int x, int y, int w, int h);
|
||||
|
||||
void MarDirector_SetupObjects(MarDirector* director);
|
||||
void Drama_PrepareUpdate(HitActor* this, int a1, void* drama, void* graphics, int obj);
|
||||
|
||||
/*
|
||||
typedef ObjItemManager{
|
||||
int a1;
|
||||
int a2;
|
||||
void (*__dt__)();
|
||||
void (*GetType)();
|
||||
void (*Load)();
|
||||
void (*Save)();
|
||||
void (*LoadAfter)();
|
||||
void (*SearchF)();
|
||||
void (*Perform)();
|
||||
void (*CreateModelData)();
|
||||
void (*CreateModelData)();
|
||||
void (*CreateAnmData)();
|
||||
void (*CreateModelDataArray)();
|
||||
void (*ClipActors)();
|
||||
void (*SetFlagOutOfCube)();
|
||||
void (*CreateSpcBinary)();
|
||||
bool (*HasMapCollision)();
|
||||
}*/
|
||||
|
||||
register void* RTOC __asm ("r2");
|
||||
register void* SceneReference __asm ("r13");
|
||||
|
||||
// GC
|
||||
//static void (*GXSetBlendMode)(int a1, int a2, int a3, int a4) = (void*)0x80359ff0;
|
||||
//static void (*GXBegin)(int a1, int a2, int a3) = (void*)0x803561a8;
|
||||
|
||||
static const Controller* Controllers = (Controller*)0x803fbbf4;
|
||||
static const Controller* ControllerOne = (Controller*)0x803fbbf4;
|
||||
static const Controller* ControllerTwo = (Controller*)0x803fbc00;
|
||||
static const Controller* ControllerThree = (Controller*)0x803fbc0c;
|
||||
static const Controller* ControllerFour = (Controller*)0x803fbc18;
|
||||
|
||||
static MarioGamePad* GamePads = (MarioGamePad*)0x8056f2ec;
|
||||
static MarioGamePad* GamePadOne = (MarioGamePad*)0x8056f2ec;
|
||||
static MarioGamePad* GamePadTwo = (MarioGamePad*)0x8056f3ec;
|
||||
static MarioGamePad* GamePadThree = (MarioGamePad*)0x8056f4ec;
|
||||
static MarioGamePad* GamePadFour = (MarioGamePad*)0x8056f5ec;
|
||||
|
||||
void MarioGamePad_Read();
|
||||
void MarioGamePad_Update(MarioGamePad* pad);
|
||||
void MarioGamePad_Reset(MarioGamePad* pad);
|
||||
|
||||
static void* gpSystemFont = (void*)0x80405850;
|
||||
static void* gpRomFont = (void*)0x80405854;
|
||||
|
||||
// SMS
|
||||
static void* gpApplication = (void*)0x803e10c0;
|
||||
static Talk2D** TalkManager = (Talk2D**)0x80405458;
|
||||
unsigned int CalcKeyCode(char* key);
|
||||
void Vector_Add(Vector* v1, Vector* v2, Vector* vo);
|
||||
void Vector_Subtract(Vector* v1, Vector* v2);
|
||||
void Vector_Normalize(Vector* vi, Vector* vo);
|
||||
void Vector_Scale(Vector* vi, float scale);
|
||||
float Vector_Magnitude(Vector* v);
|
||||
void Talk2D_OpenWindow(Talk2D* talkmanager, int a1, float f1);
|
||||
void DrawWaterBackground(GCConsole* console);
|
||||
|
||||
void StampPollution(PollutionManager* pollution, int stamp, float x, float y, float z, float r);
|
||||
void CleanPollution(PollutionManager* pollution, float x, float y, float z, float r);
|
||||
|
||||
// Stage
|
||||
static MarDirector** gpMarDirector = (void*)0x80405840;
|
||||
static void** gpItemManager = (void**)0x804055d8;
|
||||
static void** gpMap = (void*)0x80405560;
|
||||
static PollutionManager** gpPollution = (void*)0x80405598;
|
||||
static void** gpStrategy = (void*)0x80405748;
|
||||
static void** gpSunManager = (void*)0x80404820;
|
||||
static HitActor** gpSunModel = (void*)0x80404828;
|
||||
|
||||
static uint8_t* ChangeScenario = (void*)0x003e9712;
|
||||
static uint8_t* ChangeEpisode = (void*)0x003e9713;
|
||||
void ChangeStage(MarDirector* director, uint32_t stageinfo);
|
||||
HitActor* SearchF(void* namereflist, int keycode, char* ref);
|
||||
#define SearchObjByRef(ref) SearchF((void*)*(((int*)*(int*)(SceneReference - 0x5e80)) + 1), CalcKeyCode((ref)), (ref))
|
||||
int GetShineStage(uint8_t stageid);
|
||||
|
||||
int IsPolluted(void);
|
||||
|
||||
//Camera
|
||||
static HitActor** gpCamera = (void*)0x80404808;
|
||||
void Camera_AddMultiPlayer(void* camera, Vector* position);
|
||||
void Camera_RemoveMultiPlayer(void* camera, Vector* position);
|
||||
void Camera_CreateMultiPlayer(void* camera, unsigned char players);
|
||||
|
||||
// Mario
|
||||
static HitActor** gpMarioOriginal = (void*)0x804057b0;
|
||||
static HitActor** gpMarioAddress = (void*)0x804057d0;
|
||||
#define GetFludd(mario) (HitActor*)((mario) + 0x03E4)
|
||||
static Vector** gpMarioPos = (void*)0x804057d4;
|
||||
static float** gpMarioAngleX = (void*)0x804057d8;
|
||||
static float** gpMarioAngleY = (void*)0x804057dc;
|
||||
static float** gpMarioAngleZ = (void*)0x804057e0;
|
||||
static float** gpMarioSpeedX = (void*)0x804057e4;
|
||||
static float** gpMarioSpeedY = (void*)0x804057e8;
|
||||
static float** gpMarioSpeedZ = (void*)0x804057ec;
|
||||
static const uint16_t** gpMarioLightID = (void*)0x804057f0;
|
||||
static int** gpMarioFlag = (void*)0x804057f4;
|
||||
static float** gpMarioThrowPower = (void*)0x804057f8;
|
||||
static const void*** gpMarioGroundPlane = (void*)0x804057fc;
|
||||
MarioActor* GetMarioHitActor();
|
||||
HitActor* GetFLUDD();
|
||||
HitActor* GetMarioYoshi();
|
||||
int GetMarioHP();
|
||||
int GetMarioStatus();
|
||||
int GetMarioStatusFromHitActor(MarioActor* mario);
|
||||
void IncGoldCoinFlag(uint32_t coinptr, int stage, int amount);
|
||||
#define IncrementCoin(amount) incGoldCoinFlag(*(int*)(SceneReference - 0x6138), GetShineStage((*(int*)(gpApplication + 0x0E)) & 0xFF), (amount))
|
||||
void GetMarioMapPosition();
|
||||
void ThrowMario(void*, void*, float, float, float);
|
||||
void SetMarioAnim(float a1, int a2, int a3);
|
||||
int IsMarioJumping();
|
||||
void SetMarioStatus(MarioActor* mario, int a2, int a3, int a4);
|
||||
#define MarioDoJump(mario) SetMarioStatus((mario), 0x02000881, 0, 0)
|
||||
#define MarioDoThrow(mario) SetMarioStatus((mario), 0x000208B8, 0, 0)
|
||||
void EmitSweat(MarioActor* mario);
|
||||
void Fludd_Emit(HitActor* fludd);
|
||||
void Mario_StartVoice(MarioActor* mario, int id);
|
||||
void Mario_SetGamePad(MarioActor* mario, MarioGamePad* gamepad);
|
||||
void Mario_CheckController(HitActor* mario, void* drama, void* graphics);
|
||||
void Mario_ReceiveMessage(MarioActor* mario, HitActor* other, unsigned long message);
|
||||
void Mario_PlayerControl(MarioActor* mario, void* drama, void* graphics);
|
||||
void Mario_CheckCollision(MarioActor* mario);
|
||||
void Mario_DamageExec(MarioActor* mario, HitActor* other, int u1, int u2, int u3, float f1, int u4, float f2, short u5);
|
||||
void Mario_IncHP(MarioActor* mario, int n);
|
||||
void Mario_DecHP(MarioActor* mario, int n);
|
||||
void EnemyMario_CheckController(HitActor* enemymario, void* drama, void* graphics);
|
||||
void SetMarioVelocity(MarioActor* mario, float vel);
|
||||
void StartTrembleEffect(TrembleModelEffect* effectmgr, float maxTremble, float minTremble, float damp, int timer);
|
||||
void Mario_WearGlasses(MarioActor* mario);
|
||||
#define GetMarioTrembleEffect(mario) ((TrembleModelEffect*)*((void**)(mario) + 0x014F))
|
||||
|
||||
#define MARIOMSG_THROW 0x07
|
||||
#define MARIOMSG_HURTFIRE 0x0a
|
||||
#define MARIOMSG_HURT 0x0e
|
||||
void SendMsgToMario(MarioActor* mario, int msg);
|
||||
|
||||
// Objects
|
||||
#define OBJ_WATER 0x20000002
|
||||
#define OBJ_ONEUP 0x20000006
|
||||
#define OBJ_COIN 0x2000000E
|
||||
#define OBJ_BLUECOIN 0x20000010
|
||||
#define OBJ_ROCKETNOZZLE 0x20000022
|
||||
#define OBJ_HOVERNOZZLE 0x20000026
|
||||
#define OBJ_TURBONOZZLE 0x2000002A
|
||||
HitActor* MakeObjAppear(ItemManager* itemManager, int id);
|
||||
|
||||
// Effects
|
||||
void GenerateEffectElectric(HitActor* pos);
|
||||
|
||||
// Music / SFX
|
||||
void PlaySound(int rate, Sound* sfx, int nl1, int nl2, int nl3, int four);
|
||||
void StartStageEntranceDemoSeq(int u1, int u2);
|
||||
void StartBGM(int u1);
|
||||
void StopBGM(int u1);
|
||||
|
||||
#endif
|
77
ports/pal/smsFuncs
Normal file
77
ports/pal/smsFuncs
Normal file
|
@ -0,0 +1,77 @@
|
|||
MarDirector_SetupObjects = 0x802af6c4;
|
||||
PlaySound = 0x80018a30;
|
||||
StartStageEntranceDemoSeq = 0x802b3850;
|
||||
GenerateEffectElectric = 0x8025aba4;
|
||||
MakeObjAppear = 0x801aecf4;
|
||||
SendMsgToMario = 0x8026b5fc;
|
||||
EmitSweat = 0x8025c3e8;
|
||||
Mario_StartVoice = 0x8027d108;
|
||||
Fludd_Emit = 0x80260d24;
|
||||
SetMarioStatus = 0x8024bdc0;
|
||||
IsMarioJumping = 0x8026b740;
|
||||
Mario_SetAnim = 0x8023f3fc;
|
||||
ThrowMario = 0x8024bf8c;
|
||||
GetMarioMapPosition = 0x8007070c;
|
||||
IncGoldCoinFlag = 0x8028c428;
|
||||
GetMarioStatusFromHitActor = 0x8026b3d4;
|
||||
GetMarioStatus = 0x8026b400;
|
||||
GetMarioHP = 0x8026b67c;
|
||||
GetMarioYoshi = 0x8026b78c;
|
||||
GetFLUDD = 0x8026b64c;
|
||||
GetMarioHitActor = 0x8026b760;
|
||||
GetShineStage = 0x802a0b70;
|
||||
SearchF = 0x802f2954;
|
||||
ChangeStage = 0x802921b4;
|
||||
DrawWaterBackground = 0x8013df34;
|
||||
Talk2D_OpenWindow = 0x801451a4;
|
||||
Vector_Magnitude = 0x80222368;
|
||||
Vector_Normalize = 0x80222390;
|
||||
Vector_Subtract = 0x80010cfc;
|
||||
Vector_Add = 0x803427c8;
|
||||
Vector_Scale = 0x80342810;
|
||||
CalcKeyCode = 0x802f2680;
|
||||
JUTRect_Set = 0x802c2274;
|
||||
J2DScreen_Draw = 0x802c7f50;
|
||||
J2DPane_MakeMatrix = 0x802c3c90;
|
||||
J2DPane_SetBasePosition = 0x802c3ee8;
|
||||
J2DPane_Draw = 0x802c3768;
|
||||
J2DTextBox_Delete = 0x802c8bbc;
|
||||
J2DTextBox_GetStringPtr = 0x802c8e08;
|
||||
J2DTextBox_SetString = 0x802c8e10;
|
||||
J2DTextBox_DrawSelf = 0x802c8f80;
|
||||
J2DTextBox_Drawii = 0x802c8cd0;
|
||||
J2DTextBox_Draw = 0x802c8cd0;
|
||||
J2DTextBox_Create = 0x802c89f0;
|
||||
J2DPrint_Delete = 0x802c5e04;
|
||||
J2DPrint_Print = 0x802c6180;
|
||||
J2DPrint_Initiate = 0x802c5e50;
|
||||
J2DPrint_GetWidth = 0x802c643c;
|
||||
J2DPrint_Create = 0x802c5d10;
|
||||
J2DGrafContext_Setup2D = 0x802e3864;
|
||||
J2DOrthoGraph_Create = 0x802e5174;
|
||||
GXInvalidateTexAll = 0x80358620;
|
||||
GXSetScissor = 0x8035b358;
|
||||
StampPollution = 0x8019670c;
|
||||
CleanPollution = 0x8019663c;
|
||||
Drama_PrepareUpdate = 0x802f4e24;
|
||||
StartTrembleEffect = 0x8021ef1c;
|
||||
SetMarioVelocity = 0x8024d4c0;
|
||||
Mario_SetGamePad = 0x8026e378;
|
||||
MarioGamePad_Read = 0x802a00fc;
|
||||
MarioGamePad_Update = 0x802a0188;
|
||||
MarioGamePad_Reset = 0x802a0a24;
|
||||
EMario_Create = 0x80039c68;
|
||||
Mario_CheckController = 0x80249220;
|
||||
Mario_CheckCollision = 0x80278d74;
|
||||
Mario_ReceiveMessage = 0x8027a880;
|
||||
Mario_PlayerControl = 0x80245bc4;
|
||||
Mario_DamageExec = 0x8023a598;
|
||||
Mario_IncHP = 0x8023b6b4;
|
||||
Mario_DecHP = 0x8023b5b4;
|
||||
EnemyMario_CheckController = 0x8003ff5c;
|
||||
Camera_AddMultiPlayer = 0x80030d78;
|
||||
Camera_RemoveMultiPlayer = 0x80030ce0;
|
||||
Camera_CreateMultiPlayer = 0x80030dd4;
|
||||
Mario_DrawHP = 0x8003fc14;
|
||||
IsPolluted = 0x80199b70;
|
||||
Mario_WearGlasses = 0x8023fd30;
|
10
smsFuncs
10
smsFuncs
|
@ -1,7 +1,7 @@
|
|||
MarDirector_SetupObjects = 0x802b76f4;
|
||||
PlaySound = 0x800189d4;
|
||||
StartStageEntranceDemoSeq = 0x802bb880;
|
||||
GenerateEffectElectric = 0x80262E18;
|
||||
GenerateEffectElectric = 0x80262e18;
|
||||
MakeObjAppear = 0x801b6e3c;
|
||||
SendMsgToMario = 0x80273870;
|
||||
EmitSweat = 0x8026465c;
|
||||
|
@ -10,19 +10,19 @@ Fludd_Emit = 0x80268f98;
|
|||
SetMarioStatus = 0x80254034;
|
||||
IsMarioJumping = 0x802739b4;
|
||||
Mario_SetAnim = 0x80247670;
|
||||
ThrowMario = 0x8007706c;
|
||||
ThrowMario = 0x80254200;
|
||||
GetMarioMapPosition = 0x8007706c;
|
||||
IncGoldCoinFlag = 0x80294610;
|
||||
GetMarioStatusFromHitActor = 0x80273648;
|
||||
GetMarioStatus = 0x802738f0;
|
||||
GetMarioHP = 0x80273674;
|
||||
GetMarioStatus = 0x80273674;
|
||||
GetMarioHP = 0x802738f0;
|
||||
GetMarioYoshi = 0x80273a00;
|
||||
GetFLUDD = 0x802738c0;
|
||||
GetMarioHitActor = 0x802739d4;
|
||||
GetShineStage = 0x802a8ac8;
|
||||
SearchF = 0x802fa7ac;
|
||||
ChangeStage = 0x8029a31c;
|
||||
DrawWaterBackground = 0x801492A4;
|
||||
DrawWaterBackground = 0x801492a4;
|
||||
Talk2D_OpenWindow = 0x80150514;
|
||||
Vector_Magnitude = 0x8022a414;
|
||||
Vector_Normalize = 0x8022a43c;
|
||||
|
|
Reference in a new issue