From 17c2638bf5be816d8cf55f6387d206890775b836 Mon Sep 17 00:00:00 2001 From: FIX94 Date: Fri, 25 Nov 2016 02:47:29 +0100 Subject: [PATCH] -added support for 6 new games -recompiled everything using devkitppc r28 --- Makefile | 81 +++++++++++++++++++++++++++++++++++------ README.md | 10 ++++- cfw_booter/Makefile | 2 +- dkjclimber_defs.s | 39 ++++++++++++++++++++ hbl_loader/Makefile | 2 +- kirby_defs.s | 8 ++-- kirbymassattack_defs.s | 39 ++++++++++++++++++++ masterofdisguise_defs.s | 39 ++++++++++++++++++++ option_select/Makefile | 4 +- partnersintime_defs.s | 39 ++++++++++++++++++++ 10 files changed, 242 insertions(+), 21 deletions(-) create mode 100644 dkjclimber_defs.s create mode 100644 kirbymassattack_defs.s create mode 100644 masterofdisguise_defs.s create mode 100644 partnersintime_defs.s diff --git a/Makefile b/Makefile index 8778656..6e598a5 100644 --- a/Makefile +++ b/Makefile @@ -6,17 +6,26 @@ else ZIP = zip endif -all: setup brainage kirby mariokartds newsmb_eur sfcommand sm64ds yoshids zeldaph brainage.zip kirby.zip mariokartds.zip \ - newsmb_eur.zip sfcommand.zip sm64ds.zip yoshids.zip yoshitouchandgo.zip zeldaph.zip +all: setup brainage dkjclimber kirby kirbymassattack mariokartds masterofdisguise newsmb_eur partnersintime sfcommand sm64ds yoshids zeldaph \ + brainage.zip dkjclimber.zip kirby.zip kirbymassattack.zip mariokartds.zip masterofdisguise.zip newsmb_eur.zip partnersintime.zip \ + sfcommand.zip sm64ds.zip yoshids.zip yoshitouchandgo.zip zeldaph.zip brainage: setup_brainage brainage.nds +dkjclimber: setup_dkjclimber dkjclimber.nds + kirby: setup_kirby kirby.nds +kirbymassattack: setup_kirbymassattack kirbymassattack.nds + mariokartds: setup_mariokartds mariokartds.nds +masterofdisguise: setup_masterofdisguise masterofdisguise.nds + newsmb_eur: setup_newsmb_eur newsmb_eur.nds +partnersintime: setup_partnersintime partnersintime.nds + sfcommand: setup_sfcommand sfcommand.nds sm64ds: setup_sm64ds sm64ds.nds @@ -34,17 +43,33 @@ setup_brainage: @rm -f defines.s haxchi_rop.bin haxchi_rop_hook.bin @cp -f brainage_defs.s defines.s +setup_dkjclimber: + @rm -f defines.s haxchi_rop.bin haxchi_rop_hook.bin + @cp -f dkjclimber_defs.s defines.s + setup_kirby: @rm -f defines.s haxchi_rop.bin haxchi_rop_hook.bin @cp -f kirby_defs.s defines.s +setup_kirbymassattack: + @rm -f defines.s haxchi_rop.bin haxchi_rop_hook.bin + @cp -f kirbymassattack_defs.s defines.s + +setup_mariokartds: + @rm -f defines.s haxchi_rop.bin haxchi_rop_hook.bin + @cp -f mariokartds_defs.s defines.s + +setup_masterofdisguise: + @rm -f defines.s haxchi_rop.bin haxchi_rop_hook.bin + @cp -f masterofdisguise_defs.s defines.s + setup_newsmb_eur: @rm -f defines.s haxchi_rop.bin haxchi_rop_hook.bin @cp -f newsmb_eur_defs.s defines.s -setup_mariokartds: +setup_partnersintime: @rm -f defines.s haxchi_rop.bin haxchi_rop_hook.bin - @cp -f mariokartds_defs.s defines.s + @cp -f partnersintime_defs.s defines.s setup_sfcommand: @rm -f defines.s haxchi_rop.bin haxchi_rop_hook.bin @@ -68,15 +93,20 @@ brainage.nds: @mv rom.nds brainage.nds @cp brainage.nds yoshitouchandgo.nds +dkjclimber.nds: + @armips haxchi_rop.s + @armips haxchi.s + @mv rom.nds dkjclimber.nds + kirby.nds: @armips haxchi_rop.s @armips haxchi.s @mv rom.nds kirby.nds -newsmb_eur.nds: +kirbymassattack.nds: @armips haxchi_rop.s @armips haxchi.s - @mv rom.nds newsmb_eur.nds + @mv rom.nds kirbymassattack.nds mariokartds.nds: @armips haxchi_rop.s @@ -84,6 +114,21 @@ mariokartds.nds: @mv rom.nds mariokartds.nds @cp mariokartds.nds newsmb.nds +masterofdisguise.nds: + @armips haxchi_rop.s + @armips haxchi.s + @mv rom.nds masterofdisguise.nds + +newsmb_eur.nds: + @armips haxchi_rop.s + @armips haxchi.s + @mv rom.nds newsmb_eur.nds + +partnersintime.nds: + @armips haxchi_rop.s + @armips haxchi.s + @mv rom.nds partnersintime.nds + sfcommand.nds: @armips haxchi_rop.s @armips haxchi.s @@ -93,12 +138,14 @@ sm64ds.nds: @armips haxchi_rop.s @armips haxchi.s @mv rom.nds sm64ds.nds + @cp sm64ds.nds kirbycanvascurse.nds yoshids.nds: @armips haxchi_rop.s @armips haxchi.s @mv rom.nds yoshids.nds @cp yoshids.nds wwtouched.nds + @cp yoshids.nds bigbrainacademy.nds zeldaph.nds: @armips haxchi_rop.s @@ -109,33 +156,45 @@ brainage.zip: $(ZIP) -JXjq9 brainage.zip brainage.nds $(ZIP) -JXjq9 yoshitouchandgo.zip yoshitouchandgo.nds +dkjclimber.zip: + $(ZIP) -JXjq9 dkjclimber.zip dkjclimber.nds + kirby.zip: $(ZIP) -JXjq9 kirby.zip kirby.nds -newsmb_eur.zip: - $(ZIP) -JXjq9 newsmb_eur.zip newsmb_eur.nds +kirbymassattack.zip: + $(ZIP) -JXjq9 kirbymassattack.zip kirbymassattack.nds mariokartds.zip: $(ZIP) -JXjq9 mariokartds.zip mariokartds.nds $(ZIP) -JXjq9 newsmb.zip newsmb.nds +masterofdisguise.zip: + $(ZIP) -JXjq9 masterofdisguise.zip masterofdisguise.nds + +newsmb_eur.zip: + $(ZIP) -JXjq9 newsmb_eur.zip newsmb_eur.nds + +partnersintime.zip: + $(ZIP) -JXjq9 partnersintime.zip partnersintime.nds + sfcommand.zip: $(ZIP) -JXjq9 sfcommand.zip sfcommand.nds sm64ds.zip: $(ZIP) -JXjq9 sm64ds.zip sm64ds.nds + $(ZIP) -JXjq9 kirbycanvascurse.zip kirbycanvascurse.nds yoshids.zip: $(ZIP) -JXjq9 yoshids.zip yoshids.nds $(ZIP) -JXjq9 wwtouched.zip wwtouched.nds + $(ZIP) -JXjq9 bigbrainacademy.zip bigbrainacademy.nds zeldaph.zip: $(ZIP) -JXjq9 zeldaph.zip zeldaph.nds clean: - @rm -f *.bin defines.s brainage.nds brainage.zip kirby.nds kirby.zip mariokartds.nds mariokartds.zip newsmb.nds newsmb.zip newsmb_eur.nds newsmb_eur.zip \ - sfcommand.nds sfcommand.zip sm64ds.nds sm64ds.zip wwtouched.nds wwtouched.zip yoshids.nds yoshids.zip yoshitouchandgo.nds yoshitouchandgo.zip \ - zeldaph.nds zeldaph.zip + @rm -f *.bin *.nds *.zip defines.s @cd option_select && make clean && cd .. @cd hbl_loader && make clean && cd .. @cd cfw_booter && make clean && cd .. diff --git a/README.md b/README.md index 48a66e4..7fac42b 100644 --- a/README.md +++ b/README.md @@ -29,16 +29,22 @@ make sure to replace YOUR_GAME_TITLE_ID with one of the following: | Game | JPN | US | PAL | |---|:---:|:---:|:---:| -|Brain Age(Traing)|10179A00|10179B00|10179C00| +|Brain Age (Training)|10179A00|10179B00|10179C00| |Yoshi Touch and Go|10179D00|10179E00|10179F00| |Mario Kart DS|10195600|10195700|10195800| |New Super Mario Bros|10195900|10195A00|10195B00| |Yoshi's Island DS|10198800|10198900|10198A00| -|WarioWar: Touched|101A1E00|101A1F00|101A2000| +|Big Brain Academy|10198B00|10198C00|10198D00| +|WarioWare: Touched|101A1E00|101A1F00|101A2000| +|Mario and Luigi: Partners in Time|101A2100|101A2200|101A2300| +|DK Jungle Climber|101A5200|101A5300|101A5400| |Kirby Squeak Squad(Mouse Attack)|101A5500|101A5600|101A5700| +|Wario Master of Disguise|101ABD00|101ABE00|101ABF00| |Star Fox Command|101AC000|101AC100|101AC200| +|Kirby Canvas Curse|101B8800|101B8900|101B8A00| |Super Mario 64 DS|101C3300|101C3400|101C3500| |Zelda Phantom Hourglass|101C3600|101C3700|101C3800| +|Kirby Mass Attack|101C8600|101C8700|101C8800| a config.txt can look like this for example: ``` diff --git a/cfw_booter/Makefile b/cfw_booter/Makefile index bbd7543..729caca 100644 --- a/cfw_booter/Makefile +++ b/cfw_booter/Makefile @@ -6,7 +6,7 @@ CFLAGS = -std=gnu99 -O3 -nostdinc -fno-builtin ASFLAGS = -mregnames -x assembler-with-cpp LD = $(PREFIX)ld OBJCOPY = $(PREFIX)objcopy -LDFLAGS=-Ttext 180C000 -L$(DEVKITPPC)/lib/gcc/powerpc-eabi/4.8.2 -lgcc +LDFLAGS=-Ttext 180C000 -L$(DEVKITPPC)/lib/gcc/powerpc-eabi/6.2.0 -lgcc OBJDUMP ?= $(PREFIX)objdump project := . root := $(CURDIR) diff --git a/dkjclimber_defs.s b/dkjclimber_defs.s new file mode 100644 index 0000000..ce55ab2 --- /dev/null +++ b/dkjclimber_defs.s @@ -0,0 +1,39 @@ + +; game stack return address +HAX_TARGET_ADDRESS equ (0x107968EC) +; application memory pointer +HACHI_APPLICATION_PTR equ (0x10C8C938) +; arm9 rom location address +ARM9_ROM_LOCATION equ (0x1643F200) + +; constants for position calcs +RPX_OFFSET equ (0x01800000) +ARM7_ROM_MEM2_START equ (0xF0000000 - ARM9_ROM_LOCATION + 0x12000000) + +; rop-gadgets part 1 (used for all sorts of different things) +LMW_R21R1xC_LWZ_R0R1x3C_MTLR_R0_ADDI_R1_x38_BLR equ (RPX_OFFSET + 0x022070C4) +BCTRL equ (RPX_OFFSET + 0x02206FFC) +MTCTR_R27_ADDI_R31x2_MR_R3R31_R4R30_R5R29_R6R28_BCTRL_LMW_R26R1x18_MTLR_R1x34_ADDI_R1x30_BLR equ (RPX_OFFSET + 0x020A3650) +LWZ_R0xAFC_MTLR_R0_ADDI_R1xAF8_BLR equ (RPX_OFFSET + 0x020A327C) +LWZ_R0R1x14_LWZ_R30R1x8_R31R1xC_MTLR_R0_ADDI_R1x10_BLR equ (RPX_OFFSET + 0x020ACA78) +MR_R11R31_LMW_R26R1x8_LWZ_R0x24_MTLR_R0_ADDI_R1x20_CLRLWI_R3R11x18_BLR equ (RPX_OFFSET + 0x021791A8) +LWZ_R0R11x4_R31R11xM4_MTLR_R0_MR_R1R11_BLR equ (RPX_OFFSET + 0x02277B84) + +; rop-gadgets part 2 (only used to set up core 0 thread stack) +LWZ_R3_8_R1_LWZ_R0x14_MTLR_R0_ADDI_R1x10_BLR equ (RPX_OFFSET + 0x02018910) +MR_R12_R3_CMPLW_R12_R0_LI_R3_0_BEQ_ADDI_R3_R12x10_LWZ_R0_R1x14_MTLR_R0_ADDI_R1x10_BLR equ (RPX_OFFSET + 0x020AEA90) +LWZ_R5_R1x8_CMPLW_R5_R31_BNE_MR_R3_R5_LWZ_R0_R1x1C_LWZ_R30_R1x10_MTLR_R0_LWZ_R31_R1x14_ADDI_R1x18_BLR equ (RPX_OFFSET + 0x0200F4B0) +LWZ_R4_R1xC_STW_R12_R1x8_LWZ_R3_R1x8_LWZ_R0_R1x1C_MTLR_R0_ADDI_R1x18_BLR equ (RPX_OFFSET + 0x02082F58) +LWZ_R7_R1x10_LWZ_R8_R1x14_STW_R7_R31x0_STW_R8_R31x0_LWZ_R0_R1x2C_LWZ_R31_R0x24_MTLR_R0_LWZ_R30_R0x20_ADDI_R1x28_BLR equ (RPX_OFFSET + 0x02057A10) +LWZ_R3_4_R3_LWZ_R0xC_MTLR_R0_ADDI_R1x8_BLR equ (RPX_OFFSET + 0x02018998) +LWZ_R0_R1x1C_LWZ_R30_R1x10_MTLR_R0_LWZ_R31_R1x14_ADDI_R1x18_ADD_R3_R7_BLR equ (RPX_OFFSET + 0x021492E4) +MTCTR_R12_BCTRL_LI_R3_0_LWZ_R0_R1x14_LWZ_R31_R1xC_MTLR_R0_ADDI_R1x10_BLR equ (RPX_OFFSET + 0x020240F4) + +; functions used from game +NERD_CREATETHREAD equ (RPX_OFFSET + 0x02221A28) +NERD_STARTTHREAD equ (RPX_OFFSET + 0x02221E44) +NERD_JOINTHREAD equ (RPX_OFFSET + 0x022218D4) +HACHI_APPLICATION_SHUTDOWNANDDESTROY equ (RPX_OFFSET + 0x02006CD0) +NERD_FASTWIIU_SHUTDOWN equ (RPX_OFFSET + 0x0201FB24) +CORE_SHUTDOWN equ (RPX_OFFSET + 0x02220D8C) +_START_EXIT equ (RPX_OFFSET + 0x02026944) diff --git a/hbl_loader/Makefile b/hbl_loader/Makefile index efa87e3..fadc046 100644 --- a/hbl_loader/Makefile +++ b/hbl_loader/Makefile @@ -6,7 +6,7 @@ CFLAGS = -std=gnu99 -O3 -nostdinc -fno-builtin ASFLAGS = -mregnames -x assembler-with-cpp LD = $(PREFIX)ld OBJCOPY = $(PREFIX)objcopy -LDFLAGS=-Ttext 1800000 -L$(DEVKITPPC)/lib/gcc/powerpc-eabi/4.8.2 -lgcc +LDFLAGS=-Ttext 1800000 -L$(DEVKITPPC)/lib/gcc/powerpc-eabi/6.2.0 -lgcc OBJDUMP ?= $(PREFIX)objdump project := . root := $(CURDIR) diff --git a/kirby_defs.s b/kirby_defs.s index 81df742..675b0c1 100644 --- a/kirby_defs.s +++ b/kirby_defs.s @@ -1,14 +1,14 @@ ; game stack return address HAX_TARGET_ADDRESS equ (0x107968AC) - -HACHI_APPLICATION_PTR equ (0x10c8c938) - +; application memory pointer +HACHI_APPLICATION_PTR equ (0x10C8C938) +; arm9 rom location address ARM9_ROM_LOCATION equ (0x1643F200) -ARM7_ROM_MEM2_START equ (0xF0000000 - ARM9_ROM_LOCATION + 0x12000000) ; constants for position calcs RPX_OFFSET equ (0x01800000) +ARM7_ROM_MEM2_START equ (0xF0000000 - ARM9_ROM_LOCATION + 0x12000000) ; rop-gadgets part 1 (used for all sorts of different things) LMW_R21R1xC_LWZ_R0R1x3C_MTLR_R0_ADDI_R1_x38_BLR equ (RPX_OFFSET + 0x02207084) diff --git a/kirbymassattack_defs.s b/kirbymassattack_defs.s new file mode 100644 index 0000000..a8da562 --- /dev/null +++ b/kirbymassattack_defs.s @@ -0,0 +1,39 @@ + +; game stack return address (note: not ideal here) +HAX_TARGET_ADDRESS equ (0x1079A38C) +; application memory pointer +HACHI_APPLICATION_PTR equ (0x10C90938) +; arm9 rom location address +ARM9_ROM_LOCATION equ (0x16444500) + +; constants for position calcs +RPX_OFFSET equ (0x01800000) +ARM7_ROM_MEM2_START equ (0xF0000000 - ARM9_ROM_LOCATION + 0x12000000) + +; rop-gadgets part 1 (used for all sorts of different things) +LMW_R21R1xC_LWZ_R0R1x3C_MTLR_R0_ADDI_R1_x38_BLR equ (RPX_OFFSET + 0x0204AE04) +BCTRL equ (RPX_OFFSET + 0x02003D2C) +MTCTR_R27_ADDI_R31x2_MR_R3R31_R4R30_R5R29_R6R28_BCTRL_LMW_R26R1x18_MTLR_R1x34_ADDI_R1x30_BLR equ (RPX_OFFSET + 0x020AA490) +LWZ_R0xAFC_MTLR_R0_ADDI_R1xAF8_BLR equ (RPX_OFFSET + 0x020AA068) +LWZ_R0R1x14_LWZ_R30R1x8_R31R1xC_MTLR_R0_ADDI_R1x10_BLR equ (RPX_OFFSET + 0x02001A8C) +MR_R11R31_LMW_R26R1x8_LWZ_R0x24_MTLR_R0_ADDI_R1x20_CLRLWI_R3R11x18_BLR equ (RPX_OFFSET + 0x0217FFE8) +LWZ_R0R11x4_R31R11xM4_MTLR_R0_MR_R1R11_BLR equ (RPX_OFFSET + 0x0227F898) + +; rop-gadgets part 2 (only used to set up core 0 thread stack) +LWZ_R3_8_R1_LWZ_R0x14_MTLR_R0_ADDI_R1x10_BLR equ (RPX_OFFSET + 0x020187E4) +MR_R12_R3_CMPLW_R12_R0_LI_R3_0_BEQ_ADDI_R3_R12x10_LWZ_R0_R1x14_MTLR_R0_ADDI_R1x10_BLR equ (RPX_OFFSET + 0x020B58D0) +LWZ_R5_R1x8_CMPLW_R5_R31_BNE_MR_R3_R5_LWZ_R0_R1x1C_LWZ_R30_R1x10_MTLR_R0_LWZ_R31_R1x14_ADDI_R1x18_BLR equ (RPX_OFFSET + 0x0200F358) +LWZ_R4_R1xC_STW_R12_R1x8_LWZ_R3_R1x8_LWZ_R0_R1x1C_MTLR_R0_ADDI_R1x18_BLR equ (RPX_OFFSET + 0x020883B0) +LWZ_R7_R1x10_LWZ_R8_R1x14_STW_R7_R31x0_STW_R8_R31x0_LWZ_R0_R1x2C_LWZ_R31_R0x24_MTLR_R0_LWZ_R30_R0x20_ADDI_R1x28_BLR equ (RPX_OFFSET + 0x0205C700) +LWZ_R3_4_R3_LWZ_R0xC_MTLR_R0_ADDI_R1x8_BLR equ (RPX_OFFSET + 0x0201886C) +LWZ_R0_R1x1C_LWZ_R30_R1x10_MTLR_R0_LWZ_R31_R1x14_ADDI_R1x18_ADD_R3_R7_BLR equ (RPX_OFFSET + 0x02150124) +MTCTR_R12_BCTRL_LI_R3_0_LWZ_R0_R1x14_LWZ_R31_R1xC_MTLR_R0_ADDI_R1x10_BLR equ (RPX_OFFSET + 0x020241C8) + +; functions used from game +NERD_CREATETHREAD equ (RPX_OFFSET + 0x022296A0) +NERD_STARTTHREAD equ (RPX_OFFSET + 0x02229ABC) +NERD_JOINTHREAD equ (RPX_OFFSET + 0x0222954C) +HACHI_APPLICATION_SHUTDOWNANDDESTROY equ (RPX_OFFSET + 0x02006B60) +NERD_FASTWIIU_SHUTDOWN equ (RPX_OFFSET + 0x0201FC30) +CORE_SHUTDOWN equ (RPX_OFFSET + 0x02229190) +_START_EXIT equ (RPX_OFFSET + 0x020262EC) diff --git a/masterofdisguise_defs.s b/masterofdisguise_defs.s new file mode 100644 index 0000000..41e07c6 --- /dev/null +++ b/masterofdisguise_defs.s @@ -0,0 +1,39 @@ + +; game stack return address +HAX_TARGET_ADDRESS equ (0x1079B86C) +; application memory pointer +HACHI_APPLICATION_PTR equ (0x10C91938) +; arm9 rom location address +ARM9_ROM_LOCATION equ (0x16444200) + +; constants for position calcs +RPX_OFFSET equ (0x01800000) +ARM7_ROM_MEM2_START equ (0xF0000000 - ARM9_ROM_LOCATION + 0x12000000) + +; rop-gadgets part 1 (used for all sorts of different things) +LMW_R21R1xC_LWZ_R0R1x3C_MTLR_R0_ADDI_R1_x38_BLR equ (RPX_OFFSET + 0x020645EC) +BCTRL equ (RPX_OFFSET + 0x02004158) +MTCTR_R27_ADDI_R31x2_MR_R3R31_R4R30_R5R29_R6R28_BCTRL_LMW_R26R1x18_MTLR_R1x34_ADDI_R1x30_BLR equ (RPX_OFFSET + 0x020A3F34) +LWZ_R0xAFC_MTLR_R0_ADDI_R1xAF8_BLR equ (RPX_OFFSET + 0x020A3B0C) +LWZ_R0R1x14_LWZ_R30R1x8_R31R1xC_MTLR_R0_ADDI_R1x10_BLR equ (RPX_OFFSET + 0x0200106C) +MR_R11R31_LMW_R26R1x8_LWZ_R0x24_MTLR_R0_ADDI_R1x20_CLRLWI_R3R11x18_BLR equ (RPX_OFFSET + 0x02179A8C) +LWZ_R0R11x4_R31R11xM4_MTLR_R0_MR_R1R11_BLR equ (RPX_OFFSET + 0x02278460) + +; rop-gadgets part 2 (only used to set up core 0 thread stack) +LWZ_R3_8_R1_LWZ_R0x14_MTLR_R0_ADDI_R1x10_BLR equ (RPX_OFFSET + 0x02018908) +MR_R12_R3_CMPLW_R12_R0_LI_R3_0_BEQ_ADDI_R3_R12x10_LWZ_R0_R1x14_MTLR_R0_ADDI_R1x10_BLR equ (RPX_OFFSET + 0x020AF374) +LWZ_R5_R1x8_CMPLW_R5_R31_BNE_MR_R3_R5_LWZ_R0_R1x1C_LWZ_R30_R1x10_MTLR_R0_LWZ_R31_R1x14_ADDI_R1x18_BLR equ (RPX_OFFSET + 0x0200F4A8) +LWZ_R4_R1xC_STW_R12_R1x8_LWZ_R3_R1x8_LWZ_R0_R1x1C_MTLR_R0_ADDI_R1x18_BLR equ (RPX_OFFSET + 0x020836A8) +LWZ_R7_R1x10_LWZ_R8_R1x14_STW_R7_R31x0_STW_R8_R31x0_LWZ_R0_R1x2C_LWZ_R31_R0x24_MTLR_R0_LWZ_R30_R0x20_ADDI_R1x28_BLR equ (RPX_OFFSET + 0x02057944) +LWZ_R3_4_R3_LWZ_R0xC_MTLR_R0_ADDI_R1x8_BLR equ (RPX_OFFSET + 0x02018990) +LWZ_R0_R1x1C_LWZ_R30_R1x10_MTLR_R0_LWZ_R31_R1x14_ADDI_R1x18_ADD_R3_R7_BLR equ (RPX_OFFSET + 0x02149BC8) +MTCTR_R12_BCTRL_LI_R3_0_LWZ_R0_R1x14_LWZ_R31_R1xC_MTLR_R0_ADDI_R1x10_BLR equ (RPX_OFFSET + 0x020240EC) + +; functions used from game +NERD_CREATETHREAD equ (RPX_OFFSET + 0x02222304) +NERD_STARTTHREAD equ (RPX_OFFSET + 0x02222720) +NERD_JOINTHREAD equ (RPX_OFFSET + 0x022221B0) +HACHI_APPLICATION_SHUTDOWNANDDESTROY equ (RPX_OFFSET + 0x02006CC8) +NERD_FASTWIIU_SHUTDOWN equ (RPX_OFFSET + 0x0201FB1C) +CORE_SHUTDOWN equ (RPX_OFFSET + 0x02221670) +_START_EXIT equ (RPX_OFFSET + 0x0202699C) diff --git a/option_select/Makefile b/option_select/Makefile index f57878a..a512614 100644 --- a/option_select/Makefile +++ b/option_select/Makefile @@ -2,11 +2,11 @@ PATH := $(DEVKITPPC)/bin:$(PATH) PREFIX ?= powerpc-eabi- CC = $(PREFIX)gcc AS = $(PREFIX)gcc -CFLAGS = -std=gnu99 -O3 -nostdinc -fno-builtin -I$(DEVKITPPC)/lib/gcc/powerpc-eabi/4.8.2/include -I$(DEVKITPPC)/powerpc-eabi/include +CFLAGS = -std=gnu99 -O3 -nostdinc -fno-builtin -I$(DEVKITPPC)/lib/gcc/powerpc-eabi/6.2.0/include -I$(DEVKITPPC)/powerpc-eabi/include ASFLAGS = -mregnames -x assembler-with-cpp LD = $(PREFIX)ld OBJCOPY = $(PREFIX)objcopy -LDFLAGS=-Ttext 1808000 -L$(DEVKITPPC)/lib/gcc/powerpc-eabi/4.8.2 -L$(DEVKITPPC)/powerpc-eabi/lib -lgcc -lc +LDFLAGS=-Ttext 1808000 -L$(DEVKITPPC)/lib/gcc/powerpc-eabi/6.2.0 -L$(DEVKITPPC)/powerpc-eabi/lib -lgcc -lc OBJDUMP ?= $(PREFIX)objdump project := . root := $(CURDIR) diff --git a/partnersintime_defs.s b/partnersintime_defs.s new file mode 100644 index 0000000..f8ead78 --- /dev/null +++ b/partnersintime_defs.s @@ -0,0 +1,39 @@ + +; game stack return address +HAX_TARGET_ADDRESS equ (0x1079B56C) +; application memory pointer +HACHI_APPLICATION_PTR equ (0x10C91938) +; arm9 rom location address +ARM9_ROM_LOCATION equ (0x16444200) + +; constants for position calcs +RPX_OFFSET equ (0x01800000) +ARM7_ROM_MEM2_START equ (0xF0000000 - ARM9_ROM_LOCATION + 0x12000000) + +; rop-gadgets part 1 (used for all sorts of different things) +LMW_R21R1xC_LWZ_R0R1x3C_MTLR_R0_ADDI_R1_x38_BLR equ (RPX_OFFSET + 0x022070D8) +BCTRL equ (RPX_OFFSET + 0x02206F94) +MTCTR_R27_ADDI_R31x2_MR_R3R31_R4R30_R5R29_R6R28_BCTRL_LMW_R26R1x18_MTLR_R1x34_ADDI_R1x30_BLR equ (RPX_OFFSET + 0x020A3664) +LWZ_R0xAFC_MTLR_R0_ADDI_R1xAF8_BLR equ (RPX_OFFSET + 0x020A323C) +LWZ_R0R1x14_LWZ_R30R1x8_R31R1xC_MTLR_R0_ADDI_R1x10_BLR equ (RPX_OFFSET + 0x0200106C) +MR_R11R31_LMW_R26R1x8_LWZ_R0x24_MTLR_R0_ADDI_R1x20_CLRLWI_R3R11x18_BLR equ (RPX_OFFSET + 0x021791BC) +LWZ_R0R11x4_R31R11xM4_MTLR_R0_MR_R1R11_BLR equ (RPX_OFFSET + 0x02277B98) + +; rop-gadgets part 2 (only used to set up core 0 thread stack) +LWZ_R3_8_R1_LWZ_R0x14_MTLR_R0_ADDI_R1x10_BLR equ (RPX_OFFSET + 0x02018908) +MR_R12_R3_CMPLW_R12_R0_LI_R3_0_BEQ_ADDI_R3_R12x10_LWZ_R0_R1x14_MTLR_R0_ADDI_R1x10_BLR equ (RPX_OFFSET + 0x020AEAA4) +LWZ_R5_R1x8_CMPLW_R5_R31_BNE_MR_R3_R5_LWZ_R0_R1x1C_LWZ_R30_R1x10_MTLR_R0_LWZ_R31_R1x14_ADDI_R1x18_BLR equ (RPX_OFFSET + 0x0200F4A8) +LWZ_R4_R1xC_STW_R12_R1x8_LWZ_R3_R1x8_LWZ_R0_R1x1C_MTLR_R0_ADDI_R1x18_BLR equ (RPX_OFFSET + 0x02082DC0) +LWZ_R7_R1x10_LWZ_R8_R1x14_STW_R7_R31x0_STW_R8_R31x0_LWZ_R0_R1x2C_LWZ_R31_R0x24_MTLR_R0_LWZ_R30_R0x20_ADDI_R1x28_BLR equ (RPX_OFFSET + 0x0205788C) +LWZ_R3_4_R3_LWZ_R0xC_MTLR_R0_ADDI_R1x8_BLR equ (RPX_OFFSET + 0x02018990) +LWZ_R0_R1x1C_LWZ_R30_R1x10_MTLR_R0_LWZ_R31_R1x14_ADDI_R1x18_ADD_R3_R7_BLR equ (RPX_OFFSET + 0x021492F8) +MTCTR_R12_BCTRL_LI_R3_0_LWZ_R0_R1x14_LWZ_R31_R1xC_MTLR_R0_ADDI_R1x10_BLR equ (RPX_OFFSET + 0x020240EC) + +; functions used from game +NERD_CREATETHREAD equ (RPX_OFFSET + 0x02221A3C) +NERD_STARTTHREAD equ (RPX_OFFSET + 0x02221E58) +NERD_JOINTHREAD equ (RPX_OFFSET + 0x022218E8) +HACHI_APPLICATION_SHUTDOWNANDDESTROY equ (RPX_OFFSET + 0x02006CC8) +NERD_FASTWIIU_SHUTDOWN equ (RPX_OFFSET + 0x0201FB1C) +CORE_SHUTDOWN equ (RPX_OFFSET + 0x02220DA0) +_START_EXIT equ (RPX_OFFSET + 0x0202693C)