add xbox patch support

This commit is contained in:
Martin Michelsen
2024-01-21 21:56:48 -08:00
parent db3cecdd2b
commit 80a57f9d3e
147 changed files with 584 additions and 198 deletions
@@ -0,0 +1,76 @@
# This patch gives you the maximum number of each card. It only works if used
# in-game, which means it must be used with the $patch command (and not selected
# from the Patches menu).
# This patch is only for PSO Episode 3 USA, which means it requires the
# EnableEpisode3SendFunctionCall option to be enabled in config.json. If that
# option is disabled, the Patches menu won't appear for the client. If this
# patch is run on a different client version, it will do nothing.
.meta hide_from_patches_menu
.meta name="Get all cards"
.meta description="This patch gives you\nthe maximum number\nof each card."
entry_ptr:
reloc0:
.offsetof start
start:
.include Episode3USAOnly
stwu [r1 - 0x20], r1
mflr r0
stw [r1 + 0x24], r0
stw [r1 + 0x10], r31
stw [r1 + 0x14], r30
stw [r1 + 0x18], r29
stw [r1 + 0x1C], r28
# Ep3PlayerDataSegment* seg = get_player_data_segment(0)
lis r3, 0x802A
ori r3, r3, 0x1BAC
mtctr r3
li r3, 0
bctrl
mr r31, r3
# decrypt_ep3_player_data_segment(seg)
lis r3, 0x802A
ori r3, r3, 0x15BC
mtctr r3
mr r3, r31
bctrl
# Ep3PlayerDataSegment_on_card_obtained(seg, card_id) for each card, 99 times
lis r28, 0x802A
ori r28, r28, 0x17AC
li r30, 1 # r30 = card_id
obtain_card_99times:
li r29, 99 # r29 = obtain count
obtain_card_again:
mr r3, r31
mr r4, r30
mtctr r28
bctrl
subi r29, r29, 1
cmplwi r29, 0
bne obtain_card_again
addi r30, r30, 1
cmplwi r30, 0x2F0
ble obtain_card_99times
# encrypt_ep3_player_data_segment(seg)
lis r3, 0x802A
ori r3, r3, 0x160C
mtctr r3
mr r3, r31
bctrl
lwz r31, [r1 + 0x10]
lwz r30, [r1 + 0x14]
lwz r29, [r1 + 0x18]
lwz r28, [r1 + 0x1C]
lwz r0, [r1 + 0x24]
addi r1, r1, 0x20
mtlr r0
blr
@@ -0,0 +1,562 @@
.meta name="Bug fixes"
.meta description="Fix many minor\ngameplay, sound,\nand graphical bugs"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000B088 (88 bytes)
.data 0x8000B088 # address
.data 0x00000058 # size
.data 0x7FA3EB78 # 8000B088 => mr r3, r29
.data 0x38800000 # 8000B08C => li r4, 0x0000
.data 0x481AEB11 # 8000B090 => bl +0x001AEB10 /* 801B9BA0 */
.data 0x7FA3EB78 # 8000B094 => mr r3, r29
.data 0x481AEDE0 # 8000B098 => b +0x001AEDE0 /* 801B9E78 */
.data 0x881F0000 # 8000B09C => lbz r0, [r31]
.data 0x28090001 # 8000B0A0 => cmplwi r9, 1
.data 0x4082000C # 8000B0A4 => bne +0x0000000C /* 8000B0B0 */
.data 0x881F0001 # 8000B0A8 => lbz r0, [r31 + 0x0001]
.data 0x3BFF0002 # 8000B0AC => addi r31, r31, 0x0002
.data 0x48100B68 # 8000B0B0 => b +0x00100B68 /* 8010BC18 */
.data 0x39200000 # 8000B0B4 => li r9, 0x0000
.data 0x48100AF9 # 8000B0B8 => bl +0x00100AF8 /* 8010BBB0 */
.data 0x7F43D378 # 8000B0BC => mr r3, r26
.data 0x7F64DB78 # 8000B0C0 => mr r4, r27
.data 0x7F85E378 # 8000B0C4 => mr r5, r28
.data 0x7FA6EB78 # 8000B0C8 => mr r6, r29
.data 0x7FC7F378 # 8000B0CC => mr r7, r30
.data 0x7FE8FB78 # 8000B0D0 => mr r8, r31
.data 0x39200001 # 8000B0D4 => li r9, 0x0001
.data 0x48100AD9 # 8000B0D8 => bl +0x00100AD8 /* 8010BBB0 */
.data 0x48102F64 # 8000B0DC => b +0x00102F64 /* 8010E040 */
# region @ 8000B5C8 (20 bytes)
.data 0x8000B5C8 # address
.data 0x00000014 # size
.data 0x80630098 # 8000B5C8 => lwz r3, [r3 + 0x0098]
.data 0x483D5999 # 8000B5CC => bl +0x003D5998 /* 803E0F64 */
.data 0x807F042C # 8000B5D0 => lwz r3, [r31 + 0x042C]
.data 0x809F0430 # 8000B5D4 => lwz r4, [r31 + 0x0430]
.data 0x48178C7C # 8000B5D8 => b +0x00178C7C /* 80184254 */
# region @ 8000BBD0 (32 bytes)
.data 0x8000BBD0 # address
.data 0x00000020 # size
.data 0x809F0370 # 8000BBD0 => lwz r4, [r31 + 0x0370]
.data 0x3884FC00 # 8000BBD4 => subi r4, r4, 0x0400
.data 0x909F0370 # 8000BBD8 => stw [r31 + 0x0370], r4
.data 0x807F0014 # 8000BBDC => lwz r3, [r31 + 0x0014]
.data 0x28030000 # 8000BBE0 => cmplwi r3, 0
.data 0x41820008 # 8000BBE4 => beq +0x00000008 /* 8000BBEC */
.data 0x90830060 # 8000BBE8 => stw [r3 + 0x0060], r4
.data 0x48165428 # 8000BBEC => b +0x00165428 /* 80171014 */
# region @ 8000C3F8 (124 bytes)
.data 0x8000C3F8 # address
.data 0x0000007C # size
.data 0x28040000 # 8000C3F8 => cmplwi r4, 0
.data 0x4D820020 # 8000C3FC => beqlr
.data 0x9421FFF0 # 8000C400 => stwu [r1 - 0x0010], r1
.data 0x481AD7A0 # 8000C404 => b +0x001AD7A0 /* 801B9BA4 */
.data 0x9421FFE0 # 8000C408 => stwu [r1 - 0x0020], r1
.data 0x7C0802A6 # 8000C40C => mflr r0
.data 0x90010024 # 8000C410 => stw [r1 + 0x0024], r0
.data 0xBF410008 # 8000C414 => stmw [r1 + 0x0008], r26
.data 0x7C7F1B78 # 8000C418 => mr r31, r3
.data 0x4BFFFFDD # 8000C41C => bl -0x00000024 /* 8000C3F8 */
.data 0x3BC00000 # 8000C420 => li r30, 0x0000
.data 0x3BBF0D04 # 8000C424 => addi r29, r31, 0x0D04
.data 0x837F032C # 8000C428 => lwz r27, [r31 + 0x032C]
.data 0x839D0000 # 8000C42C => lwz r28, [r29]
.data 0x7F83E379 # 8000C430 => mr. r3, r28
.data 0x41820018 # 8000C434 => beq +0x00000018 /* 8000C44C */
.data 0x38800001 # 8000C438 => li r4, 0x0001
.data 0x480FED81 # 8000C43C => bl +0x000FED80 /* 8010B1BC */
.data 0x7F83E378 # 8000C440 => mr r3, r28
.data 0x38800001 # 8000C444 => li r4, 0x0001
.data 0x480FEEF1 # 8000C448 => bl +0x000FEEF0 /* 8010B338 */
.data 0x3BBD0004 # 8000C44C => addi r29, r29, 0x0004
.data 0x3BDE0001 # 8000C450 => addi r30, r30, 0x0001
.data 0x2C1E000D # 8000C454 => cmpwi r30, 13
.data 0x4180FFD4 # 8000C458 => blt -0x0000002C /* 8000C42C */
.data 0x937F032C # 8000C45C => stw [r31 + 0x032C], r27
.data 0xBB410008 # 8000C460 => lmw r26, [r1 + 0x0008]
.data 0x80010024 # 8000C464 => lwz r0, [r1 + 0x0024]
.data 0x7C0803A6 # 8000C468 => mtlr r0
.data 0x38210020 # 8000C46C => addi r1, r1, 0x0020
.data 0x4E800020 # 8000C470 => blr
# region @ 8000C640 (20 bytes)
.data 0x8000C640 # address
.data 0x00000014 # size
.data 0x54800673 # 8000C640 => rlwinm. r0, r4, 0, 25, 25
.data 0x41820008 # 8000C644 => beq +0x00000008 /* 8000C64C */
.data 0x38800000 # 8000C648 => li r4, 0x0000
.data 0x38040009 # 8000C64C => addi r0, r4, 0x0009
.data 0x4810C938 # 8000C650 => b +0x0010C938 /* 80118F88 */
# region @ 8000C6D0 (32 bytes)
.data 0x8000C6D0 # address
.data 0x00000020 # size
.data 0x38000001 # 8000C6D0 => li r0, 0x0001
.data 0x901D0054 # 8000C6D4 => stw [r29 + 0x0054], r0
.data 0x807D0024 # 8000C6D8 => lwz r3, [r29 + 0x0024]
.data 0x48211244 # 8000C6DC => b +0x00211244 /* 8021D920 */
.data 0x38000001 # 8000C6E0 => li r0, 0x0001
.data 0x901F0378 # 8000C6E4 => stw [r31 + 0x0378], r0
.data 0x807F0024 # 8000C6E8 => lwz r3, [r31 + 0x0024]
.data 0x482146F4 # 8000C6EC => b +0x002146F4 /* 80220DE0 */
# region @ 8000C8A0 (20 bytes)
.data 0x8000C8A0 # address
.data 0x00000014 # size
.data 0x1C00000A # 8000C8A0 => mulli r0, r0, 10
.data 0x57E407BD # 8000C8A4 => rlwinm. r4, r31, 0, 30, 30
.data 0x41820008 # 8000C8A8 => beq +0x00000008 /* 8000C8B0 */
.data 0x7FA00734 # 8000C8AC => extsh r0, r29
.data 0x4810605C # 8000C8B0 => b +0x0010605C /* 8011290C */
# region @ 8000C8C0 (16 bytes)
.data 0x8000C8C0 # address
.data 0x00000010 # size
.data 0x7000000F # 8000C8C0 => andi. r0, r0, 0x000F
.data 0x7000004F # 8000C8C4 => andi. r0, r0, 0x004F
.data 0x2C000004 # 8000C8C8 => cmpwi r0, 4
.data 0x4E800020 # 8000C8CC => blr
# region @ 8000D980 (20 bytes)
.data 0x8000D980 # address
.data 0x00000014 # size
.data 0x807C0000 # 8000D980 => lwz r3, [r28]
.data 0x2C030013 # 8000D984 => cmpwi r3, 19
.data 0x40820008 # 8000D988 => bne +0x00000008 /* 8000D990 */
.data 0x38600002 # 8000D98C => li r3, 0x0002
.data 0x482AE568 # 8000D990 => b +0x002AE568 /* 802BBEF8 */
# region @ 8000D9A0 (24 bytes)
.data 0x8000D9A0 # address
.data 0x00000018 # size
.data 0xC042FC88 # 8000D9A0 => lfs f2, [r2 - 0x0378]
.data 0x807E0030 # 8000D9A4 => lwz r3, [r30 + 0x0030]
.data 0x70630020 # 8000D9A8 => andi. r3, r3, 0x0020
.data 0x41820008 # 8000D9AC => beq +0x00000008 /* 8000D9B4 */
.data 0xC042FCA0 # 8000D9B0 => lfs f2, [r2 - 0x0360]
.data 0x483280A0 # 8000D9B4 => b +0x003280A0 /* 80335A54 */
# region @ 8000E1E0 (28 bytes)
.data 0x8000E1E0 # address
.data 0x0000001C # size
.data 0x7FC802A6 # 8000E1E0 => mflr r30
.data 0x38A00000 # 8000E1E4 => li r5, 0x0000
.data 0x38C0001E # 8000E1E8 => li r6, 0x001E
.data 0x38E00040 # 8000E1EC => li r7, 0x0040
.data 0x4807853D # 8000E1F0 => bl +0x0007853C /* 8008672C */
.data 0x7FC803A6 # 8000E1F4 => mtlr r30
.data 0x4E800020 # 8000E1F8 => blr
# region @ 80013084 (4 bytes)
.data 0x80013084 # address
.data 0x00000004 # size
.data 0x4BFFFCC0 # 80013084 => b -0x00000340 /* 80012D44 */
# region @ 800142F4 (4 bytes)
.data 0x800142F4 # address
.data 0x00000004 # size
.data 0x4BFF85CD # 800142F4 => bl -0x00007A34 /* 8000C8C0 */
# region @ 80015D1C (4 bytes)
.data 0x80015D1C # address
.data 0x00000004 # size
.data 0x4BFF6BA9 # 80015D1C => bl -0x00009458 /* 8000C8C4 */
# region @ 800917B4 (8 bytes)
.data 0x800917B4 # address
.data 0x00000008 # size
.data 0x4800024D # 800917B4 => bl +0x0000024C /* 80091A00 */
.data 0xB3C3032C # 800917B8 => sth [r3 + 0x032C], r30
# region @ 800BC9E8 (4 bytes)
.data 0x800BC9E8 # address
.data 0x00000004 # size
.data 0x48000010 # 800BC9E8 => b +0x00000010 /* 800BC9F8 */
# region @ 80101EB8 (4 bytes)
.data 0x80101EB8 # address
.data 0x00000004 # size
.data 0x60000000 # 80101EB8 => nop
# region @ 80104DEC (4 bytes)
.data 0x80104DEC # address
.data 0x00000004 # size
.data 0x4182000C # 80104DEC => beq +0x0000000C /* 80104DF8 */
# region @ 8010771C (4 bytes)
.data 0x8010771C # address
.data 0x00000004 # size
.data 0x4800000C # 8010771C => b +0x0000000C /* 80107728 */
# region @ 80107730 (4 bytes)
.data 0x80107730 # address
.data 0x00000004 # size
.data 0x7C030378 # 80107730 => mr r3, r0
# region @ 8010BC14 (4 bytes)
.data 0x8010BC14 # address
.data 0x00000004 # size
.data 0x4BEFF488 # 8010BC14 => b -0x00100B78 /* 8000B09C */
# region @ 8010E03C (4 bytes)
.data 0x8010E03C # address
.data 0x00000004 # size
.data 0x4BEFD078 # 8010E03C => b -0x00102F88 /* 8000B0B4 */
# region @ 80112908 (4 bytes)
.data 0x80112908 # address
.data 0x00000004 # size
.data 0x4BEF9F98 # 80112908 => b -0x00106068 /* 8000C8A0 */
# region @ 8011461C (4 bytes)
.data 0x8011461C # address
.data 0x00000004 # size
.data 0x38000012 # 8011461C => li r0, 0x0012
# region @ 80118854 (4 bytes)
.data 0x80118854 # address
.data 0x00000004 # size
.data 0x88040016 # 80118854 => lbz r0, [r4 + 0x0016]
# region @ 80118860 (4 bytes)
.data 0x80118860 # address
.data 0x00000004 # size
.data 0x88040017 # 80118860 => lbz r0, [r4 + 0x0017]
# region @ 80118F84 (4 bytes)
.data 0x80118F84 # address
.data 0x00000004 # size
.data 0x4BEF36BC # 80118F84 => b -0x0010C944 /* 8000C640 */
# region @ 8011CD34 (12 bytes)
.data 0x8011CD34 # address
.data 0x0000000C # size
.data 0x7C030378 # 8011CD34 => mr r3, r0
.data 0x3863FFFF # 8011CD38 => subi r3, r3, 0x0001
.data 0x4BFFFFE8 # 8011CD3C => b -0x00000018 /* 8011CD24 */
# region @ 8011CDF0 (12 bytes)
.data 0x8011CDF0 # address
.data 0x0000000C # size
.data 0x7C030378 # 8011CDF0 => mr r3, r0
.data 0x3863FFFF # 8011CDF4 => subi r3, r3, 0x0001
.data 0x4BFFFFE8 # 8011CDF8 => b -0x00000018 /* 8011CDE0 */
# region @ 8011CE40 (12 bytes)
.data 0x8011CE40 # address
.data 0x0000000C # size
.data 0x7C040378 # 8011CE40 => mr r4, r0
.data 0x3884FFFF # 8011CE44 => subi r4, r4, 0x0001
.data 0x4BFFFFE8 # 8011CE48 => b -0x00000018 /* 8011CE30 */
# region @ 801666E0 (8 bytes)
.data 0x801666E0 # address
.data 0x00000008 # size
.data 0x3C604005 # 801666E0 => lis r3, 0x4005
.data 0x4800009C # 801666E4 => b +0x0000009C /* 80166780 */
# region @ 8016677C (4 bytes)
.data 0x8016677C # address
.data 0x00000004 # size
.data 0x4800001C # 8016677C => b +0x0000001C /* 80166798 */
# region @ 80171010 (4 bytes)
.data 0x80171010 # address
.data 0x00000004 # size
.data 0x4BE9ABC0 # 80171010 => b -0x00165440 /* 8000BBD0 */
# region @ 80171030 (4 bytes)
.data 0x80171030 # address
.data 0x00000004 # size
.data 0x60800420 # 80171030 => ori r0, r4, 0x0420
# region @ 80184250 (4 bytes)
.data 0x80184250 # address
.data 0x00000004 # size
.data 0x4BE87378 # 80184250 => b -0x00178C88 /* 8000B5C8 */
# region @ 80184290 (4 bytes)
.data 0x80184290 # address
.data 0x00000004 # size
.data 0x60000000 # 80184290 => nop
# region @ 80189E20 (4 bytes)
.data 0x80189E20 # address
.data 0x00000004 # size
.data 0x60000000 # 80189E20 => nop
# region @ 801937A8 (4 bytes)
.data 0x801937A8 # address
.data 0x00000004 # size
.data 0x60000000 # 801937A8 => nop
# region @ 801B9BA0 (4 bytes)
.data 0x801B9BA0 # address
.data 0x00000004 # size
.data 0x4BE52868 # 801B9BA0 => b -0x001AD798 /* 8000C408 */
# region @ 801B9E74 (4 bytes)
.data 0x801B9E74 # address
.data 0x00000004 # size
.data 0x4BE51214 # 801B9E74 => b -0x001AEDEC /* 8000B088 */
# region @ 801C62C0 (4 bytes)
.data 0x801C62C0 # address
.data 0x00000004 # size
.data 0x389F02FC # 801C62C0 => addi r4, r31, 0x02FC
# region @ 801CA610 (4 bytes)
.data 0x801CA610 # address
.data 0x00000004 # size
.data 0x48000010 # 801CA610 => b +0x00000010 /* 801CA620 */
# region @ 8021D91C (4 bytes)
.data 0x8021D91C # address
.data 0x00000004 # size
.data 0x4BDEEDB4 # 8021D91C => b -0x0021124C /* 8000C6D0 */
# region @ 80220DDC (4 bytes)
.data 0x80220DDC # address
.data 0x00000004 # size
.data 0x4BDEB904 # 80220DDC => b -0x002146FC /* 8000C6E0 */
# region @ 80229C10 (4 bytes)
.data 0x80229C10 # address
.data 0x00000004 # size
.data 0x2C000001 # 80229C10 => cmpwi r0, 1
# region @ 8022A410 (4 bytes)
.data 0x8022A410 # address
.data 0x00000004 # size
.data 0x3880FF00 # 8022A410 => li r4, 0xFFFFFF00
# region @ 8022A440 (4 bytes)
.data 0x8022A440 # address
.data 0x00000004 # size
.data 0x3880FE80 # 8022A440 => li r4, 0xFFFFFE80
# region @ 8022A470 (4 bytes)
.data 0x8022A470 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 8022A470 => li r4, 0xFFFFFDB0
# region @ 8022D10C (4 bytes)
.data 0x8022D10C # address
.data 0x00000004 # size
.data 0x60000000 # 8022D10C => nop
# region @ 8022D840 (4 bytes)
.data 0x8022D840 # address
.data 0x00000004 # size
.data 0x41810630 # 8022D840 => bgt +0x00000630 /* 8022DE70 */
# region @ 8022DB34 (4 bytes)
.data 0x8022DB34 # address
.data 0x00000004 # size
.data 0x4181033C # 8022DB34 => bgt +0x0000033C /* 8022DE70 */
# region @ 8022DC28 (4 bytes)
.data 0x8022DC28 # address
.data 0x00000004 # size
.data 0x41810248 # 8022DC28 => bgt +0x00000248 /* 8022DE70 */
# region @ 8022EB64 (4 bytes)
.data 0x8022EB64 # address
.data 0x00000004 # size
.data 0x3880FF00 # 8022EB64 => li r4, 0xFFFFFF00
# region @ 8022EB94 (4 bytes)
.data 0x8022EB94 # address
.data 0x00000004 # size
.data 0x3880FE80 # 8022EB94 => li r4, 0xFFFFFE80
# region @ 8022EBC4 (4 bytes)
.data 0x8022EBC4 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 8022EBC4 => li r4, 0xFFFFFDB0
# region @ 8022F370 (4 bytes)
.data 0x8022F370 # address
.data 0x00000004 # size
.data 0x3880FF00 # 8022F370 => li r4, 0xFFFFFF00
# region @ 8022F3A0 (4 bytes)
.data 0x8022F3A0 # address
.data 0x00000004 # size
.data 0x3880FE80 # 8022F3A0 => li r4, 0xFFFFFE80
# region @ 8022F3D0 (4 bytes)
.data 0x8022F3D0 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 8022F3D0 => li r4, 0xFFFFFDB0
# region @ 80230974 (4 bytes)
.data 0x80230974 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80230974 => li r4, 0xFFFFFF00
# region @ 802309A4 (4 bytes)
.data 0x802309A4 # address
.data 0x00000004 # size
.data 0x3880FE80 # 802309A4 => li r4, 0xFFFFFE80
# region @ 802309D4 (4 bytes)
.data 0x802309D4 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 802309D4 => li r4, 0xFFFFFDB0
# region @ 802316E4 (4 bytes)
.data 0x802316E4 # address
.data 0x00000004 # size
.data 0x3880FF00 # 802316E4 => li r4, 0xFFFFFF00
# region @ 80231714 (4 bytes)
.data 0x80231714 # address
.data 0x00000004 # size
.data 0x3880FE80 # 80231714 => li r4, 0xFFFFFE80
# region @ 80231744 (4 bytes)
.data 0x80231744 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80231744 => li r4, 0xFFFFFDB0
# region @ 80231FD8 (4 bytes)
.data 0x80231FD8 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80231FD8 => li r4, 0xFFFFFF00
# region @ 80232010 (4 bytes)
.data 0x80232010 # address
.data 0x00000004 # size
.data 0x3880FE80 # 80232010 => li r4, 0xFFFFFE80
# region @ 80232048 (4 bytes)
.data 0x80232048 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80232048 => li r4, 0xFFFFFDB0
# region @ 80234084 (4 bytes)
.data 0x80234084 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80234084 => li r4, 0xFFFFFF00
# region @ 802340B4 (4 bytes)
.data 0x802340B4 # address
.data 0x00000004 # size
.data 0x3880FE80 # 802340B4 => li r4, 0xFFFFFE80
# region @ 802340E4 (4 bytes)
.data 0x802340E4 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 802340E4 => li r4, 0xFFFFFDB0
# region @ 802366B0 (4 bytes)
.data 0x802366B0 # address
.data 0x00000004 # size
.data 0x3880FF00 # 802366B0 => li r4, 0xFFFFFF00
# region @ 802366EC (4 bytes)
.data 0x802366EC # address
.data 0x00000004 # size
.data 0x3880FE80 # 802366EC => li r4, 0xFFFFFE80
# region @ 80236728 (4 bytes)
.data 0x80236728 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80236728 => li r4, 0xFFFFFDB0
# region @ 80236E88 (4 bytes)
.data 0x80236E88 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80236E88 => li r4, 0xFFFFFF00
# region @ 80236EB8 (4 bytes)
.data 0x80236EB8 # address
.data 0x00000004 # size
.data 0x3880FE80 # 80236EB8 => li r4, 0xFFFFFE80
# region @ 80236EE8 (4 bytes)
.data 0x80236EE8 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80236EE8 => li r4, 0xFFFFFDB0
# region @ 8023789C (4 bytes)
.data 0x8023789C # address
.data 0x00000004 # size
.data 0x3880FF00 # 8023789C => li r4, 0xFFFFFF00
# region @ 802378CC (4 bytes)
.data 0x802378CC # address
.data 0x00000004 # size
.data 0x3880FE80 # 802378CC => li r4, 0xFFFFFE80
# region @ 802378FC (4 bytes)
.data 0x802378FC # address
.data 0x00000004 # size
.data 0x3880FDB0 # 802378FC => li r4, 0xFFFFFDB0
# region @ 80238274 (4 bytes)
.data 0x80238274 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80238274 => li r4, 0xFFFFFF00
# region @ 802382A4 (4 bytes)
.data 0x802382A4 # address
.data 0x00000004 # size
.data 0x3880FE80 # 802382A4 => li r4, 0xFFFFFE80
# region @ 802382D4 (4 bytes)
.data 0x802382D4 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 802382D4 => li r4, 0xFFFFFDB0
# region @ 8023BBA4 (4 bytes)
.data 0x8023BBA4 # address
.data 0x00000004 # size
.data 0x3880FF00 # 8023BBA4 => li r4, 0xFFFFFF00
# region @ 8023BBD4 (4 bytes)
.data 0x8023BBD4 # address
.data 0x00000004 # size
.data 0x3880FE80 # 8023BBD4 => li r4, 0xFFFFFE80
# region @ 8023BC04 (4 bytes)
.data 0x8023BC04 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 8023BC04 => li r4, 0xFFFFFDB0
# region @ 80250AEC (4 bytes)
.data 0x80250AEC # address
.data 0x00000004 # size
.data 0x60000000 # 80250AEC => nop
# region @ 80268788 (4 bytes)
.data 0x80268788 # address
.data 0x00000004 # size
.data 0x60000000 # 80268788 => nop
# region @ 8026E2D4 (4 bytes)
.data 0x8026E2D4 # address
.data 0x00000004 # size
.data 0x3884AAFA # 8026E2D4 => subi r4, r4, 0x5506
# region @ 8026E3E8 (4 bytes)
.data 0x8026E3E8 # address
.data 0x00000004 # size
.data 0x3863AAFA # 8026E3E8 => subi r3, r3, 0x5506
# region @ 8026E470 (4 bytes)
.data 0x8026E470 # address
.data 0x00000004 # size
.data 0x3883AAFA # 8026E470 => subi r4, r3, 0x5506
# region @ 802BBEF4 (4 bytes)
.data 0x802BBEF4 # address
.data 0x00000004 # size
.data 0x4BD51A8C # 802BBEF4 => b -0x002AE574 /* 8000D980 */
# region @ 802FC2F4 (4 bytes)
.data 0x802FC2F4 # address
.data 0x00000004 # size
.data 0x2C030001 # 802FC2F4 => cmpwi r3, 1
# region @ 80301F58 (28 bytes)
.data 0x80301F58 # address
.data 0x0000001C # size
.data 0x48000020 # 80301F58 => b +0x00000020 /* 80301F78 */
.data 0x3863A830 # 80301F5C => subi r3, r3, 0x57D0
.data 0x800DB9A4 # 80301F60 => lwz r0, [r13 - 0x465C]
.data 0x2C000023 # 80301F64 => cmpwi r0, 35
.data 0x40820008 # 80301F68 => bne +0x00000008 /* 80301F70 */
.data 0x3863FB28 # 80301F6C => subi r3, r3, 0x04D8
.data 0x4800008C # 80301F70 => b +0x0000008C /* 80301FFC */
# region @ 80301FF8 (4 bytes)
.data 0x80301FF8 # address
.data 0x00000004 # size
.data 0x4BFFFF64 # 80301FF8 => b -0x0000009C /* 80301F5C */
# region @ 80335A50 (4 bytes)
.data 0x80335A50 # address
.data 0x00000004 # size
.data 0x4BCD7F50 # 80335A50 => b -0x003280B0 /* 8000D9A0 */
# region @ 80356814 (4 bytes)
.data 0x80356814 # address
.data 0x00000004 # size
.data 0x388001E8 # 80356814 => li r4, 0x01E8
# region @ 80356838 (4 bytes)
.data 0x80356838 # address
.data 0x00000004 # size
.data 0x4BCB79A9 # 80356838 => bl -0x00348658 /* 8000E1E0 */
# region @ 803568A8 (4 bytes)
.data 0x803568A8 # address
.data 0x00000004 # size
.data 0x388001E8 # 803568A8 => li r4, 0x01E8
# region @ 803568B8 (4 bytes)
.data 0x803568B8 # address
.data 0x00000004 # size
.data 0x4BCB7929 # 803568B8 => bl -0x003486D8 /* 8000E1E0 */
# region @ 804B3EF0 (8 bytes)
.data 0x804B3EF0 # address
.data 0x00000008 # size
.data 0x70808080 # 804B3EF0 => andi. r0, r4, 0x8080
.data 0x60707070 # 804B3EF4 => ori r16, r3, 0x7070
# region @ 804C76B4 (4 bytes)
.data 0x804C76B4 # address
.data 0x00000004 # size
.data 0x0000001E # 804C76B4 => .invalid
# region @ 804C770C (4 bytes)
.data 0x804C770C # address
.data 0x00000004 # size
.data 0x00000028 # 804C770C => .invalid
# region @ 804C7738 (4 bytes)
.data 0x804C7738 # address
.data 0x00000004 # size
.data 0x00000032 # 804C7738 => .invalid
# region @ 804C7764 (4 bytes)
.data 0x804C7764 # address
.data 0x00000004 # size
.data 0x0000003C # 804C7764 => .invalid
# region @ 804C7774 (4 bytes)
.data 0x804C7774 # address
.data 0x00000004 # size
.data 0x0018003C # 804C7774 => .invalid
# region @ 804C79CC (4 bytes)
.data 0x804C79CC # address
.data 0x00000004 # size
.data 0x00000028 # 804C79CC => .invalid
# region @ 804CC310 (4 bytes)
.data 0x804CC310 # address
.data 0x00000004 # size
.data 0xFF0074EE # 804CC310 => fsel f24, f0, f14, f19
# region @ 805CA274 (4 bytes)
.data 0x805CA274 # address
.data 0x00000004 # size
.data 0x435C0000 # 805CA274 => bc 26, 28, +0x00000000 /* 805CA274 */
# region @ 805CBF10 (4 bytes)
.data 0x805CBF10 # address
.data 0x00000004 # size
.data 0x46AFC800 # 805CBF10 => .invalid sc
# region @ 805CC1B0 (4 bytes)
.data 0x805CC1B0 # address
.data 0x00000004 # size
.data 0x43480000 # 805CC1B0 => bc 26, 8, +0x00000000 /* 805CC1B0 */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,562 @@
.meta name="Bug fixes"
.meta description="Fix many minor\ngameplay, sound,\nand graphical bugs"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000B088 (88 bytes)
.data 0x8000B088 # address
.data 0x00000058 # size
.data 0x7FA3EB78 # 8000B088 => mr r3, r29
.data 0x38800000 # 8000B08C => li r4, 0x0000
.data 0x481AEB11 # 8000B090 => bl +0x001AEB10 /* 801B9BA0 */
.data 0x7FA3EB78 # 8000B094 => mr r3, r29
.data 0x481AEDE0 # 8000B098 => b +0x001AEDE0 /* 801B9E78 */
.data 0x881F0000 # 8000B09C => lbz r0, [r31]
.data 0x28090001 # 8000B0A0 => cmplwi r9, 1
.data 0x4082000C # 8000B0A4 => bne +0x0000000C /* 8000B0B0 */
.data 0x881F0001 # 8000B0A8 => lbz r0, [r31 + 0x0001]
.data 0x3BFF0002 # 8000B0AC => addi r31, r31, 0x0002
.data 0x48100B68 # 8000B0B0 => b +0x00100B68 /* 8010BC18 */
.data 0x39200000 # 8000B0B4 => li r9, 0x0000
.data 0x48100AF9 # 8000B0B8 => bl +0x00100AF8 /* 8010BBB0 */
.data 0x7F43D378 # 8000B0BC => mr r3, r26
.data 0x7F64DB78 # 8000B0C0 => mr r4, r27
.data 0x7F85E378 # 8000B0C4 => mr r5, r28
.data 0x7FA6EB78 # 8000B0C8 => mr r6, r29
.data 0x7FC7F378 # 8000B0CC => mr r7, r30
.data 0x7FE8FB78 # 8000B0D0 => mr r8, r31
.data 0x39200001 # 8000B0D4 => li r9, 0x0001
.data 0x48100AD9 # 8000B0D8 => bl +0x00100AD8 /* 8010BBB0 */
.data 0x48102F64 # 8000B0DC => b +0x00102F64 /* 8010E040 */
# region @ 8000B5C8 (20 bytes)
.data 0x8000B5C8 # address
.data 0x00000014 # size
.data 0x80630098 # 8000B5C8 => lwz r3, [r3 + 0x0098]
.data 0x483D59F1 # 8000B5CC => bl +0x003D59F0 /* 803E0FBC */
.data 0x807F042C # 8000B5D0 => lwz r3, [r31 + 0x042C]
.data 0x809F0430 # 8000B5D4 => lwz r4, [r31 + 0x0430]
.data 0x48178C7C # 8000B5D8 => b +0x00178C7C /* 80184254 */
# region @ 8000BBD0 (32 bytes)
.data 0x8000BBD0 # address
.data 0x00000020 # size
.data 0x809F0370 # 8000BBD0 => lwz r4, [r31 + 0x0370]
.data 0x3884FC00 # 8000BBD4 => subi r4, r4, 0x0400
.data 0x909F0370 # 8000BBD8 => stw [r31 + 0x0370], r4
.data 0x807F0014 # 8000BBDC => lwz r3, [r31 + 0x0014]
.data 0x28030000 # 8000BBE0 => cmplwi r3, 0
.data 0x41820008 # 8000BBE4 => beq +0x00000008 /* 8000BBEC */
.data 0x90830060 # 8000BBE8 => stw [r3 + 0x0060], r4
.data 0x48165428 # 8000BBEC => b +0x00165428 /* 80171014 */
# region @ 8000C3F8 (124 bytes)
.data 0x8000C3F8 # address
.data 0x0000007C # size
.data 0x28040000 # 8000C3F8 => cmplwi r4, 0
.data 0x4D820020 # 8000C3FC => beqlr
.data 0x9421FFF0 # 8000C400 => stwu [r1 - 0x0010], r1
.data 0x481AD7A0 # 8000C404 => b +0x001AD7A0 /* 801B9BA4 */
.data 0x9421FFE0 # 8000C408 => stwu [r1 - 0x0020], r1
.data 0x7C0802A6 # 8000C40C => mflr r0
.data 0x90010024 # 8000C410 => stw [r1 + 0x0024], r0
.data 0xBF410008 # 8000C414 => stmw [r1 + 0x0008], r26
.data 0x7C7F1B78 # 8000C418 => mr r31, r3
.data 0x4BFFFFDD # 8000C41C => bl -0x00000024 /* 8000C3F8 */
.data 0x3BC00000 # 8000C420 => li r30, 0x0000
.data 0x3BBF0D04 # 8000C424 => addi r29, r31, 0x0D04
.data 0x837F032C # 8000C428 => lwz r27, [r31 + 0x032C]
.data 0x839D0000 # 8000C42C => lwz r28, [r29]
.data 0x7F83E379 # 8000C430 => mr. r3, r28
.data 0x41820018 # 8000C434 => beq +0x00000018 /* 8000C44C */
.data 0x38800001 # 8000C438 => li r4, 0x0001
.data 0x480FED81 # 8000C43C => bl +0x000FED80 /* 8010B1BC */
.data 0x7F83E378 # 8000C440 => mr r3, r28
.data 0x38800001 # 8000C444 => li r4, 0x0001
.data 0x480FEEF1 # 8000C448 => bl +0x000FEEF0 /* 8010B338 */
.data 0x3BBD0004 # 8000C44C => addi r29, r29, 0x0004
.data 0x3BDE0001 # 8000C450 => addi r30, r30, 0x0001
.data 0x2C1E000D # 8000C454 => cmpwi r30, 13
.data 0x4180FFD4 # 8000C458 => blt -0x0000002C /* 8000C42C */
.data 0x937F032C # 8000C45C => stw [r31 + 0x032C], r27
.data 0xBB410008 # 8000C460 => lmw r26, [r1 + 0x0008]
.data 0x80010024 # 8000C464 => lwz r0, [r1 + 0x0024]
.data 0x7C0803A6 # 8000C468 => mtlr r0
.data 0x38210020 # 8000C46C => addi r1, r1, 0x0020
.data 0x4E800020 # 8000C470 => blr
# region @ 8000C640 (20 bytes)
.data 0x8000C640 # address
.data 0x00000014 # size
.data 0x54800673 # 8000C640 => rlwinm. r0, r4, 0, 25, 25
.data 0x41820008 # 8000C644 => beq +0x00000008 /* 8000C64C */
.data 0x38800000 # 8000C648 => li r4, 0x0000
.data 0x38040009 # 8000C64C => addi r0, r4, 0x0009
.data 0x4810C938 # 8000C650 => b +0x0010C938 /* 80118F88 */
# region @ 8000C6D0 (32 bytes)
.data 0x8000C6D0 # address
.data 0x00000020 # size
.data 0x38000001 # 8000C6D0 => li r0, 0x0001
.data 0x901D0054 # 8000C6D4 => stw [r29 + 0x0054], r0
.data 0x807D0024 # 8000C6D8 => lwz r3, [r29 + 0x0024]
.data 0x48211244 # 8000C6DC => b +0x00211244 /* 8021D920 */
.data 0x38000001 # 8000C6E0 => li r0, 0x0001
.data 0x901F0378 # 8000C6E4 => stw [r31 + 0x0378], r0
.data 0x807F0024 # 8000C6E8 => lwz r3, [r31 + 0x0024]
.data 0x482146F4 # 8000C6EC => b +0x002146F4 /* 80220DE0 */
# region @ 8000C8A0 (20 bytes)
.data 0x8000C8A0 # address
.data 0x00000014 # size
.data 0x1C00000A # 8000C8A0 => mulli r0, r0, 10
.data 0x57E407BD # 8000C8A4 => rlwinm. r4, r31, 0, 30, 30
.data 0x41820008 # 8000C8A8 => beq +0x00000008 /* 8000C8B0 */
.data 0x7FA00734 # 8000C8AC => extsh r0, r29
.data 0x4810605C # 8000C8B0 => b +0x0010605C /* 8011290C */
# region @ 8000C8C0 (16 bytes)
.data 0x8000C8C0 # address
.data 0x00000010 # size
.data 0x7000000F # 8000C8C0 => andi. r0, r0, 0x000F
.data 0x7000004F # 8000C8C4 => andi. r0, r0, 0x004F
.data 0x2C000004 # 8000C8C8 => cmpwi r0, 4
.data 0x4E800020 # 8000C8CC => blr
# region @ 8000D980 (20 bytes)
.data 0x8000D980 # address
.data 0x00000014 # size
.data 0x807C0000 # 8000D980 => lwz r3, [r28]
.data 0x2C030013 # 8000D984 => cmpwi r3, 19
.data 0x40820008 # 8000D988 => bne +0x00000008 /* 8000D990 */
.data 0x38600002 # 8000D98C => li r3, 0x0002
.data 0x482AE5AC # 8000D990 => b +0x002AE5AC /* 802BBF3C */
# region @ 8000D9A0 (24 bytes)
.data 0x8000D9A0 # address
.data 0x00000018 # size
.data 0xC042FC88 # 8000D9A0 => lfs f2, [r2 - 0x0378]
.data 0x807E0030 # 8000D9A4 => lwz r3, [r30 + 0x0030]
.data 0x70630020 # 8000D9A8 => andi. r3, r3, 0x0020
.data 0x41820008 # 8000D9AC => beq +0x00000008 /* 8000D9B4 */
.data 0xC042FCA0 # 8000D9B0 => lfs f2, [r2 - 0x0360]
.data 0x483280E4 # 8000D9B4 => b +0x003280E4 /* 80335A98 */
# region @ 8000E1E0 (28 bytes)
.data 0x8000E1E0 # address
.data 0x0000001C # size
.data 0x7FC802A6 # 8000E1E0 => mflr r30
.data 0x38A00000 # 8000E1E4 => li r5, 0x0000
.data 0x38C0001E # 8000E1E8 => li r6, 0x001E
.data 0x38E00040 # 8000E1EC => li r7, 0x0040
.data 0x4807853D # 8000E1F0 => bl +0x0007853C /* 8008672C */
.data 0x7FC803A6 # 8000E1F4 => mtlr r30
.data 0x4E800020 # 8000E1F8 => blr
# region @ 80013084 (4 bytes)
.data 0x80013084 # address
.data 0x00000004 # size
.data 0x4BFFFCC0 # 80013084 => b -0x00000340 /* 80012D44 */
# region @ 800142F4 (4 bytes)
.data 0x800142F4 # address
.data 0x00000004 # size
.data 0x4BFF85CD # 800142F4 => bl -0x00007A34 /* 8000C8C0 */
# region @ 80015D1C (4 bytes)
.data 0x80015D1C # address
.data 0x00000004 # size
.data 0x4BFF6BA9 # 80015D1C => bl -0x00009458 /* 8000C8C4 */
# region @ 800917B4 (8 bytes)
.data 0x800917B4 # address
.data 0x00000008 # size
.data 0x4800024D # 800917B4 => bl +0x0000024C /* 80091A00 */
.data 0xB3C3032C # 800917B8 => sth [r3 + 0x032C], r30
# region @ 800BC9E8 (4 bytes)
.data 0x800BC9E8 # address
.data 0x00000004 # size
.data 0x48000010 # 800BC9E8 => b +0x00000010 /* 800BC9F8 */
# region @ 80101EB8 (4 bytes)
.data 0x80101EB8 # address
.data 0x00000004 # size
.data 0x60000000 # 80101EB8 => nop
# region @ 80104DEC (4 bytes)
.data 0x80104DEC # address
.data 0x00000004 # size
.data 0x4182000C # 80104DEC => beq +0x0000000C /* 80104DF8 */
# region @ 8010771C (4 bytes)
.data 0x8010771C # address
.data 0x00000004 # size
.data 0x4800000C # 8010771C => b +0x0000000C /* 80107728 */
# region @ 80107730 (4 bytes)
.data 0x80107730 # address
.data 0x00000004 # size
.data 0x7C030378 # 80107730 => mr r3, r0
# region @ 8010BC14 (4 bytes)
.data 0x8010BC14 # address
.data 0x00000004 # size
.data 0x4BEFF488 # 8010BC14 => b -0x00100B78 /* 8000B09C */
# region @ 8010E03C (4 bytes)
.data 0x8010E03C # address
.data 0x00000004 # size
.data 0x4BEFD078 # 8010E03C => b -0x00102F88 /* 8000B0B4 */
# region @ 80112908 (4 bytes)
.data 0x80112908 # address
.data 0x00000004 # size
.data 0x4BEF9F98 # 80112908 => b -0x00106068 /* 8000C8A0 */
# region @ 8011461C (4 bytes)
.data 0x8011461C # address
.data 0x00000004 # size
.data 0x38000012 # 8011461C => li r0, 0x0012
# region @ 80118854 (4 bytes)
.data 0x80118854 # address
.data 0x00000004 # size
.data 0x88040016 # 80118854 => lbz r0, [r4 + 0x0016]
# region @ 80118860 (4 bytes)
.data 0x80118860 # address
.data 0x00000004 # size
.data 0x88040017 # 80118860 => lbz r0, [r4 + 0x0017]
# region @ 80118F84 (4 bytes)
.data 0x80118F84 # address
.data 0x00000004 # size
.data 0x4BEF36BC # 80118F84 => b -0x0010C944 /* 8000C640 */
# region @ 8011CD34 (12 bytes)
.data 0x8011CD34 # address
.data 0x0000000C # size
.data 0x7C030378 # 8011CD34 => mr r3, r0
.data 0x3863FFFF # 8011CD38 => subi r3, r3, 0x0001
.data 0x4BFFFFE8 # 8011CD3C => b -0x00000018 /* 8011CD24 */
# region @ 8011CDF0 (12 bytes)
.data 0x8011CDF0 # address
.data 0x0000000C # size
.data 0x7C030378 # 8011CDF0 => mr r3, r0
.data 0x3863FFFF # 8011CDF4 => subi r3, r3, 0x0001
.data 0x4BFFFFE8 # 8011CDF8 => b -0x00000018 /* 8011CDE0 */
# region @ 8011CE40 (12 bytes)
.data 0x8011CE40 # address
.data 0x0000000C # size
.data 0x7C040378 # 8011CE40 => mr r4, r0
.data 0x3884FFFF # 8011CE44 => subi r4, r4, 0x0001
.data 0x4BFFFFE8 # 8011CE48 => b -0x00000018 /* 8011CE30 */
# region @ 801666E0 (8 bytes)
.data 0x801666E0 # address
.data 0x00000008 # size
.data 0x3C604005 # 801666E0 => lis r3, 0x4005
.data 0x4800009C # 801666E4 => b +0x0000009C /* 80166780 */
# region @ 8016677C (4 bytes)
.data 0x8016677C # address
.data 0x00000004 # size
.data 0x4800001C # 8016677C => b +0x0000001C /* 80166798 */
# region @ 80171010 (4 bytes)
.data 0x80171010 # address
.data 0x00000004 # size
.data 0x4BE9ABC0 # 80171010 => b -0x00165440 /* 8000BBD0 */
# region @ 80171030 (4 bytes)
.data 0x80171030 # address
.data 0x00000004 # size
.data 0x60800420 # 80171030 => ori r0, r4, 0x0420
# region @ 80184250 (4 bytes)
.data 0x80184250 # address
.data 0x00000004 # size
.data 0x4BE87378 # 80184250 => b -0x00178C88 /* 8000B5C8 */
# region @ 80184290 (4 bytes)
.data 0x80184290 # address
.data 0x00000004 # size
.data 0x60000000 # 80184290 => nop
# region @ 80189E20 (4 bytes)
.data 0x80189E20 # address
.data 0x00000004 # size
.data 0x60000000 # 80189E20 => nop
# region @ 801937A8 (4 bytes)
.data 0x801937A8 # address
.data 0x00000004 # size
.data 0x60000000 # 801937A8 => nop
# region @ 801B9BA0 (4 bytes)
.data 0x801B9BA0 # address
.data 0x00000004 # size
.data 0x4BE52868 # 801B9BA0 => b -0x001AD798 /* 8000C408 */
# region @ 801B9E74 (4 bytes)
.data 0x801B9E74 # address
.data 0x00000004 # size
.data 0x4BE51214 # 801B9E74 => b -0x001AEDEC /* 8000B088 */
# region @ 801C62C0 (4 bytes)
.data 0x801C62C0 # address
.data 0x00000004 # size
.data 0x389F02FC # 801C62C0 => addi r4, r31, 0x02FC
# region @ 801CA610 (4 bytes)
.data 0x801CA610 # address
.data 0x00000004 # size
.data 0x48000010 # 801CA610 => b +0x00000010 /* 801CA620 */
# region @ 8021D91C (4 bytes)
.data 0x8021D91C # address
.data 0x00000004 # size
.data 0x4BDEEDB4 # 8021D91C => b -0x0021124C /* 8000C6D0 */
# region @ 80220DDC (4 bytes)
.data 0x80220DDC # address
.data 0x00000004 # size
.data 0x4BDEB904 # 80220DDC => b -0x002146FC /* 8000C6E0 */
# region @ 80229C10 (4 bytes)
.data 0x80229C10 # address
.data 0x00000004 # size
.data 0x2C000001 # 80229C10 => cmpwi r0, 1
# region @ 8022A410 (4 bytes)
.data 0x8022A410 # address
.data 0x00000004 # size
.data 0x3880FF00 # 8022A410 => li r4, 0xFFFFFF00
# region @ 8022A440 (4 bytes)
.data 0x8022A440 # address
.data 0x00000004 # size
.data 0x3880FE80 # 8022A440 => li r4, 0xFFFFFE80
# region @ 8022A470 (4 bytes)
.data 0x8022A470 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 8022A470 => li r4, 0xFFFFFDB0
# region @ 8022D10C (4 bytes)
.data 0x8022D10C # address
.data 0x00000004 # size
.data 0x60000000 # 8022D10C => nop
# region @ 8022D840 (4 bytes)
.data 0x8022D840 # address
.data 0x00000004 # size
.data 0x41810630 # 8022D840 => bgt +0x00000630 /* 8022DE70 */
# region @ 8022DB34 (4 bytes)
.data 0x8022DB34 # address
.data 0x00000004 # size
.data 0x4181033C # 8022DB34 => bgt +0x0000033C /* 8022DE70 */
# region @ 8022DC28 (4 bytes)
.data 0x8022DC28 # address
.data 0x00000004 # size
.data 0x41810248 # 8022DC28 => bgt +0x00000248 /* 8022DE70 */
# region @ 8022EB64 (4 bytes)
.data 0x8022EB64 # address
.data 0x00000004 # size
.data 0x3880FF00 # 8022EB64 => li r4, 0xFFFFFF00
# region @ 8022EB94 (4 bytes)
.data 0x8022EB94 # address
.data 0x00000004 # size
.data 0x3880FE80 # 8022EB94 => li r4, 0xFFFFFE80
# region @ 8022EBC4 (4 bytes)
.data 0x8022EBC4 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 8022EBC4 => li r4, 0xFFFFFDB0
# region @ 8022F370 (4 bytes)
.data 0x8022F370 # address
.data 0x00000004 # size
.data 0x3880FF00 # 8022F370 => li r4, 0xFFFFFF00
# region @ 8022F3A0 (4 bytes)
.data 0x8022F3A0 # address
.data 0x00000004 # size
.data 0x3880FE80 # 8022F3A0 => li r4, 0xFFFFFE80
# region @ 8022F3D0 (4 bytes)
.data 0x8022F3D0 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 8022F3D0 => li r4, 0xFFFFFDB0
# region @ 80230974 (4 bytes)
.data 0x80230974 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80230974 => li r4, 0xFFFFFF00
# region @ 802309A4 (4 bytes)
.data 0x802309A4 # address
.data 0x00000004 # size
.data 0x3880FE80 # 802309A4 => li r4, 0xFFFFFE80
# region @ 802309D4 (4 bytes)
.data 0x802309D4 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 802309D4 => li r4, 0xFFFFFDB0
# region @ 802316E4 (4 bytes)
.data 0x802316E4 # address
.data 0x00000004 # size
.data 0x3880FF00 # 802316E4 => li r4, 0xFFFFFF00
# region @ 80231714 (4 bytes)
.data 0x80231714 # address
.data 0x00000004 # size
.data 0x3880FE80 # 80231714 => li r4, 0xFFFFFE80
# region @ 80231744 (4 bytes)
.data 0x80231744 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80231744 => li r4, 0xFFFFFDB0
# region @ 80231FD8 (4 bytes)
.data 0x80231FD8 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80231FD8 => li r4, 0xFFFFFF00
# region @ 80232010 (4 bytes)
.data 0x80232010 # address
.data 0x00000004 # size
.data 0x3880FE80 # 80232010 => li r4, 0xFFFFFE80
# region @ 80232048 (4 bytes)
.data 0x80232048 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80232048 => li r4, 0xFFFFFDB0
# region @ 80234084 (4 bytes)
.data 0x80234084 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80234084 => li r4, 0xFFFFFF00
# region @ 802340B4 (4 bytes)
.data 0x802340B4 # address
.data 0x00000004 # size
.data 0x3880FE80 # 802340B4 => li r4, 0xFFFFFE80
# region @ 802340E4 (4 bytes)
.data 0x802340E4 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 802340E4 => li r4, 0xFFFFFDB0
# region @ 802366B0 (4 bytes)
.data 0x802366B0 # address
.data 0x00000004 # size
.data 0x3880FF00 # 802366B0 => li r4, 0xFFFFFF00
# region @ 802366EC (4 bytes)
.data 0x802366EC # address
.data 0x00000004 # size
.data 0x3880FE80 # 802366EC => li r4, 0xFFFFFE80
# region @ 80236728 (4 bytes)
.data 0x80236728 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80236728 => li r4, 0xFFFFFDB0
# region @ 80236E88 (4 bytes)
.data 0x80236E88 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80236E88 => li r4, 0xFFFFFF00
# region @ 80236EB8 (4 bytes)
.data 0x80236EB8 # address
.data 0x00000004 # size
.data 0x3880FE80 # 80236EB8 => li r4, 0xFFFFFE80
# region @ 80236EE8 (4 bytes)
.data 0x80236EE8 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80236EE8 => li r4, 0xFFFFFDB0
# region @ 8023789C (4 bytes)
.data 0x8023789C # address
.data 0x00000004 # size
.data 0x3880FF00 # 8023789C => li r4, 0xFFFFFF00
# region @ 802378CC (4 bytes)
.data 0x802378CC # address
.data 0x00000004 # size
.data 0x3880FE80 # 802378CC => li r4, 0xFFFFFE80
# region @ 802378FC (4 bytes)
.data 0x802378FC # address
.data 0x00000004 # size
.data 0x3880FDB0 # 802378FC => li r4, 0xFFFFFDB0
# region @ 80238274 (4 bytes)
.data 0x80238274 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80238274 => li r4, 0xFFFFFF00
# region @ 802382A4 (4 bytes)
.data 0x802382A4 # address
.data 0x00000004 # size
.data 0x3880FE80 # 802382A4 => li r4, 0xFFFFFE80
# region @ 802382D4 (4 bytes)
.data 0x802382D4 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 802382D4 => li r4, 0xFFFFFDB0
# region @ 8023BBA4 (4 bytes)
.data 0x8023BBA4 # address
.data 0x00000004 # size
.data 0x3880FF00 # 8023BBA4 => li r4, 0xFFFFFF00
# region @ 8023BBD4 (4 bytes)
.data 0x8023BBD4 # address
.data 0x00000004 # size
.data 0x3880FE80 # 8023BBD4 => li r4, 0xFFFFFE80
# region @ 8023BC04 (4 bytes)
.data 0x8023BC04 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 8023BC04 => li r4, 0xFFFFFDB0
# region @ 80250AEC (4 bytes)
.data 0x80250AEC # address
.data 0x00000004 # size
.data 0x60000000 # 80250AEC => nop
# region @ 80268788 (4 bytes)
.data 0x80268788 # address
.data 0x00000004 # size
.data 0x60000000 # 80268788 => nop
# region @ 8026E2D4 (4 bytes)
.data 0x8026E2D4 # address
.data 0x00000004 # size
.data 0x3884AAFA # 8026E2D4 => subi r4, r4, 0x5506
# region @ 8026E3E8 (4 bytes)
.data 0x8026E3E8 # address
.data 0x00000004 # size
.data 0x3863AAFA # 8026E3E8 => subi r3, r3, 0x5506
# region @ 8026E470 (4 bytes)
.data 0x8026E470 # address
.data 0x00000004 # size
.data 0x3883AAFA # 8026E470 => subi r4, r3, 0x5506
# region @ 802BBF38 (4 bytes)
.data 0x802BBF38 # address
.data 0x00000004 # size
.data 0x4BD51A48 # 802BBF38 => b -0x002AE5B8 /* 8000D980 */
# region @ 802FC338 (4 bytes)
.data 0x802FC338 # address
.data 0x00000004 # size
.data 0x2C030001 # 802FC338 => cmpwi r3, 1
# region @ 80301F9C (28 bytes)
.data 0x80301F9C # address
.data 0x0000001C # size
.data 0x48000020 # 80301F9C => b +0x00000020 /* 80301FBC */
.data 0x3863A830 # 80301FA0 => subi r3, r3, 0x57D0
.data 0x800DB9A4 # 80301FA4 => lwz r0, [r13 - 0x465C]
.data 0x2C000023 # 80301FA8 => cmpwi r0, 35
.data 0x40820008 # 80301FAC => bne +0x00000008 /* 80301FB4 */
.data 0x3863FB28 # 80301FB0 => subi r3, r3, 0x04D8
.data 0x4800008C # 80301FB4 => b +0x0000008C /* 80302040 */
# region @ 8030203C (4 bytes)
.data 0x8030203C # address
.data 0x00000004 # size
.data 0x4BFFFF64 # 8030203C => b -0x0000009C /* 80301FA0 */
# region @ 80335A94 (4 bytes)
.data 0x80335A94 # address
.data 0x00000004 # size
.data 0x4BCD7F0C # 80335A94 => b -0x003280F4 /* 8000D9A0 */
# region @ 80356858 (4 bytes)
.data 0x80356858 # address
.data 0x00000004 # size
.data 0x388001E8 # 80356858 => li r4, 0x01E8
# region @ 8035687C (4 bytes)
.data 0x8035687C # address
.data 0x00000004 # size
.data 0x4BCB7965 # 8035687C => bl -0x0034869C /* 8000E1E0 */
# region @ 803568EC (4 bytes)
.data 0x803568EC # address
.data 0x00000004 # size
.data 0x388001E8 # 803568EC => li r4, 0x01E8
# region @ 803568FC (4 bytes)
.data 0x803568FC # address
.data 0x00000004 # size
.data 0x4BCB78E5 # 803568FC => bl -0x0034871C /* 8000E1E0 */
# region @ 804B43D0 (8 bytes)
.data 0x804B43D0 # address
.data 0x00000008 # size
.data 0x70808080 # 804B43D0 => andi. r0, r4, 0x8080
.data 0x60707070 # 804B43D4 => ori r16, r3, 0x7070
# region @ 804C7B94 (4 bytes)
.data 0x804C7B94 # address
.data 0x00000004 # size
.data 0x0000001E # 804C7B94 => .invalid
# region @ 804C7BEC (4 bytes)
.data 0x804C7BEC # address
.data 0x00000004 # size
.data 0x00000028 # 804C7BEC => .invalid
# region @ 804C7C18 (4 bytes)
.data 0x804C7C18 # address
.data 0x00000004 # size
.data 0x00000032 # 804C7C18 => .invalid
# region @ 804C7C44 (4 bytes)
.data 0x804C7C44 # address
.data 0x00000004 # size
.data 0x0000003C # 804C7C44 => .invalid
# region @ 804C7C54 (4 bytes)
.data 0x804C7C54 # address
.data 0x00000004 # size
.data 0x0018003C # 804C7C54 => .invalid
# region @ 804C7EAC (4 bytes)
.data 0x804C7EAC # address
.data 0x00000004 # size
.data 0x00000028 # 804C7EAC => .invalid
# region @ 804CC7F0 (4 bytes)
.data 0x804CC7F0 # address
.data 0x00000004 # size
.data 0xFF0074EE # 804CC7F0 => fsel f24, f0, f14, f19
# region @ 805D1294 (4 bytes)
.data 0x805D1294 # address
.data 0x00000004 # size
.data 0x435C0000 # 805D1294 => bc 26, 28, +0x00000000 /* 805D1294 */
# region @ 805D2F30 (4 bytes)
.data 0x805D2F30 # address
.data 0x00000004 # size
.data 0x46AFC800 # 805D2F30 => .invalid sc
# region @ 805D31D0 (4 bytes)
.data 0x805D31D0 # address
.data 0x00000004 # size
.data 0x43480000 # 805D31D0 => bc 26, 8, +0x00000000 /* 805D31D0 */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,550 @@
.meta name="Bug fixes"
.meta description="Fix many minor\ngameplay, sound,\nand graphical bugs"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000B088 (88 bytes)
.data 0x8000B088 # address
.data 0x00000058 # size
.data 0x7FA3EB78 # 8000B088 => mr r3, r29
.data 0x38800000 # 8000B08C => li r4, 0x0000
.data 0x481AECC1 # 8000B090 => bl +0x001AECC0 /* 801B9D50 */
.data 0x7FA3EB78 # 8000B094 => mr r3, r29
.data 0x481AEF90 # 8000B098 => b +0x001AEF90 /* 801BA028 */
.data 0x881F0000 # 8000B09C => lbz r0, [r31]
.data 0x28090001 # 8000B0A0 => cmplwi r9, 1
.data 0x4082000C # 8000B0A4 => bne +0x0000000C /* 8000B0B0 */
.data 0x881F0001 # 8000B0A8 => lbz r0, [r31 + 0x0001]
.data 0x3BFF0002 # 8000B0AC => addi r31, r31, 0x0002
.data 0x48100A54 # 8000B0B0 => b +0x00100A54 /* 8010BB04 */
.data 0x39200000 # 8000B0B4 => li r9, 0x0000
.data 0x481009E5 # 8000B0B8 => bl +0x001009E4 /* 8010BA9C */
.data 0x7F43D378 # 8000B0BC => mr r3, r26
.data 0x7F64DB78 # 8000B0C0 => mr r4, r27
.data 0x7F85E378 # 8000B0C4 => mr r5, r28
.data 0x7FA6EB78 # 8000B0C8 => mr r6, r29
.data 0x7FC7F378 # 8000B0CC => mr r7, r30
.data 0x7FE8FB78 # 8000B0D0 => mr r8, r31
.data 0x39200001 # 8000B0D4 => li r9, 0x0001
.data 0x481009C5 # 8000B0D8 => bl +0x001009C4 /* 8010BA9C */
.data 0x48102E5C # 8000B0DC => b +0x00102E5C /* 8010DF38 */
# region @ 8000B5C8 (20 bytes)
.data 0x8000B5C8 # address
.data 0x00000014 # size
.data 0x80630098 # 8000B5C8 => lwz r3, [r3 + 0x0098]
.data 0x483D90F1 # 8000B5CC => bl +0x003D90F0 /* 803E46BC */
.data 0x807F042C # 8000B5D0 => lwz r3, [r31 + 0x042C]
.data 0x809F0430 # 8000B5D4 => lwz r4, [r31 + 0x0430]
.data 0x48178DB0 # 8000B5D8 => b +0x00178DB0 /* 80184388 */
# region @ 8000BBD0 (32 bytes)
.data 0x8000BBD0 # address
.data 0x00000020 # size
.data 0x809F0370 # 8000BBD0 => lwz r4, [r31 + 0x0370]
.data 0x3884FC00 # 8000BBD4 => subi r4, r4, 0x0400
.data 0x909F0370 # 8000BBD8 => stw [r31 + 0x0370], r4
.data 0x807F0014 # 8000BBDC => lwz r3, [r31 + 0x0014]
.data 0x28030000 # 8000BBE0 => cmplwi r3, 0
.data 0x41820008 # 8000BBE4 => beq +0x00000008 /* 8000BBEC */
.data 0x90830060 # 8000BBE8 => stw [r3 + 0x0060], r4
.data 0x48165548 # 8000BBEC => b +0x00165548 /* 80171134 */
# region @ 8000C3F8 (124 bytes)
.data 0x8000C3F8 # address
.data 0x0000007C # size
.data 0x28040000 # 8000C3F8 => cmplwi r4, 0
.data 0x4D820020 # 8000C3FC => beqlr
.data 0x9421FFF0 # 8000C400 => stwu [r1 - 0x0010], r1
.data 0x481AD950 # 8000C404 => b +0x001AD950 /* 801B9D54 */
.data 0x9421FFE0 # 8000C408 => stwu [r1 - 0x0020], r1
.data 0x7C0802A6 # 8000C40C => mflr r0
.data 0x90010024 # 8000C410 => stw [r1 + 0x0024], r0
.data 0xBF410008 # 8000C414 => stmw [r1 + 0x0008], r26
.data 0x7C7F1B78 # 8000C418 => mr r31, r3
.data 0x4BFFFFDD # 8000C41C => bl -0x00000024 /* 8000C3F8 */
.data 0x3BC00000 # 8000C420 => li r30, 0x0000
.data 0x3BBF0D04 # 8000C424 => addi r29, r31, 0x0D04
.data 0x837F032C # 8000C428 => lwz r27, [r31 + 0x032C]
.data 0x839D0000 # 8000C42C => lwz r28, [r29]
.data 0x7F83E379 # 8000C430 => mr. r3, r28
.data 0x41820018 # 8000C434 => beq +0x00000018 /* 8000C44C */
.data 0x38800001 # 8000C438 => li r4, 0x0001
.data 0x480FEC6D # 8000C43C => bl +0x000FEC6C /* 8010B0A8 */
.data 0x7F83E378 # 8000C440 => mr r3, r28
.data 0x38800001 # 8000C444 => li r4, 0x0001
.data 0x480FEDDD # 8000C448 => bl +0x000FEDDC /* 8010B224 */
.data 0x3BBD0004 # 8000C44C => addi r29, r29, 0x0004
.data 0x3BDE0001 # 8000C450 => addi r30, r30, 0x0001
.data 0x2C1E000D # 8000C454 => cmpwi r30, 13
.data 0x4180FFD4 # 8000C458 => blt -0x0000002C /* 8000C42C */
.data 0x937F032C # 8000C45C => stw [r31 + 0x032C], r27
.data 0xBB410008 # 8000C460 => lmw r26, [r1 + 0x0008]
.data 0x80010024 # 8000C464 => lwz r0, [r1 + 0x0024]
.data 0x7C0803A6 # 8000C468 => mtlr r0
.data 0x38210020 # 8000C46C => addi r1, r1, 0x0020
.data 0x4E800020 # 8000C470 => blr
# region @ 8000C640 (20 bytes)
.data 0x8000C640 # address
.data 0x00000014 # size
.data 0x54800673 # 8000C640 => rlwinm. r0, r4, 0, 25, 25
.data 0x41820008 # 8000C644 => beq +0x00000008 /* 8000C64C */
.data 0x38800000 # 8000C648 => li r4, 0x0000
.data 0x38040009 # 8000C64C => addi r0, r4, 0x0009
.data 0x4810C858 # 8000C650 => b +0x0010C858 /* 80118EA8 */
# region @ 8000C6D0 (32 bytes)
.data 0x8000C6D0 # address
.data 0x00000020 # size
.data 0x38000001 # 8000C6D0 => li r0, 0x0001
.data 0x901D0054 # 8000C6D4 => stw [r29 + 0x0054], r0
.data 0x807D0024 # 8000C6D8 => lwz r3, [r29 + 0x0024]
.data 0x482122F8 # 8000C6DC => b +0x002122F8 /* 8021E9D4 */
.data 0x38000001 # 8000C6E0 => li r0, 0x0001
.data 0x901F0378 # 8000C6E4 => stw [r31 + 0x0378], r0
.data 0x807F0024 # 8000C6E8 => lwz r3, [r31 + 0x0024]
.data 0x482157A8 # 8000C6EC => b +0x002157A8 /* 80221E94 */
# region @ 8000C8A0 (20 bytes)
.data 0x8000C8A0 # address
.data 0x00000014 # size
.data 0x1C00000A # 8000C8A0 => mulli r0, r0, 10
.data 0x57E407BD # 8000C8A4 => rlwinm. r4, r31, 0, 30, 30
.data 0x41820008 # 8000C8A8 => beq +0x00000008 /* 8000C8B0 */
.data 0x7FA00734 # 8000C8AC => extsh r0, r29
.data 0x48105F54 # 8000C8B0 => b +0x00105F54 /* 80112804 */
# region @ 8000C8C0 (16 bytes)
.data 0x8000C8C0 # address
.data 0x00000010 # size
.data 0x7000000F # 8000C8C0 => andi. r0, r0, 0x000F
.data 0x7000004F # 8000C8C4 => andi. r0, r0, 0x004F
.data 0x2C000004 # 8000C8C8 => cmpwi r0, 4
.data 0x4E800020 # 8000C8CC => blr
# region @ 8000D980 (20 bytes)
.data 0x8000D980 # address
.data 0x00000014 # size
.data 0x807C0000 # 8000D980 => lwz r3, [r28]
.data 0x2C030013 # 8000D984 => cmpwi r3, 19
.data 0x40820008 # 8000D988 => bne +0x00000008 /* 8000D990 */
.data 0x38600002 # 8000D98C => li r3, 0x0002
.data 0x482AFAE8 # 8000D990 => b +0x002AFAE8 /* 802BD478 */
# region @ 8000D9A0 (24 bytes)
.data 0x8000D9A0 # address
.data 0x00000018 # size
.data 0xC042FC88 # 8000D9A0 => lfs f2, [r2 - 0x0378]
.data 0x807E0030 # 8000D9A4 => lwz r3, [r30 + 0x0030]
.data 0x70630020 # 8000D9A8 => andi. r3, r3, 0x0020
.data 0x41820008 # 8000D9AC => beq +0x00000008 /* 8000D9B4 */
.data 0xC042FCA0 # 8000D9B0 => lfs f2, [r2 - 0x0360]
.data 0x48329BC0 # 8000D9B4 => b +0x00329BC0 /* 80337574 */
# region @ 8000E1E0 (28 bytes)
.data 0x8000E1E0 # address
.data 0x0000001C # size
.data 0x7FC802A6 # 8000E1E0 => mflr r30
.data 0x38A00000 # 8000E1E4 => li r5, 0x0000
.data 0x38C0001E # 8000E1E8 => li r6, 0x001E
.data 0x38E00040 # 8000E1EC => li r7, 0x0040
.data 0x480786D5 # 8000E1F0 => bl +0x000786D4 /* 800868C4 */
.data 0x7FC803A6 # 8000E1F4 => mtlr r30
.data 0x4E800020 # 8000E1F8 => blr
# region @ 8001304C (4 bytes)
.data 0x8001304C # address
.data 0x00000004 # size
.data 0x4BFFFCC0 # 8001304C => b -0x00000340 /* 80012D0C */
# region @ 800142BC (4 bytes)
.data 0x800142BC # address
.data 0x00000004 # size
.data 0x4BFF8605 # 800142BC => bl -0x000079FC /* 8000C8C0 */
# region @ 80015CE4 (4 bytes)
.data 0x80015CE4 # address
.data 0x00000004 # size
.data 0x4BFF6BE1 # 80015CE4 => bl -0x00009420 /* 8000C8C4 */
# region @ 8009194C (8 bytes)
.data 0x8009194C # address
.data 0x00000008 # size
.data 0x4800024D # 8009194C => bl +0x0000024C /* 80091B98 */
.data 0xB3C3032C # 80091950 => sth [r3 + 0x032C], r30
# region @ 800BCB90 (4 bytes)
.data 0x800BCB90 # address
.data 0x00000004 # size
.data 0x48000010 # 800BCB90 => b +0x00000010 /* 800BCBA0 */
# region @ 80104CB4 (4 bytes)
.data 0x80104CB4 # address
.data 0x00000004 # size
.data 0x4182000C # 80104CB4 => beq +0x0000000C /* 80104CC0 */
# region @ 801075E4 (4 bytes)
.data 0x801075E4 # address
.data 0x00000004 # size
.data 0x4800000C # 801075E4 => b +0x0000000C /* 801075F0 */
# region @ 801075F8 (4 bytes)
.data 0x801075F8 # address
.data 0x00000004 # size
.data 0x7C030378 # 801075F8 => mr r3, r0
# region @ 8010BB00 (4 bytes)
.data 0x8010BB00 # address
.data 0x00000004 # size
.data 0x4BEFF59C # 8010BB00 => b -0x00100A64 /* 8000B09C */
# region @ 8010DF34 (4 bytes)
.data 0x8010DF34 # address
.data 0x00000004 # size
.data 0x4BEFD180 # 8010DF34 => b -0x00102E80 /* 8000B0B4 */
# region @ 80112800 (4 bytes)
.data 0x80112800 # address
.data 0x00000004 # size
.data 0x4BEFA0A0 # 80112800 => b -0x00105F60 /* 8000C8A0 */
# region @ 80114534 (4 bytes)
.data 0x80114534 # address
.data 0x00000004 # size
.data 0x38000012 # 80114534 => li r0, 0x0012
# region @ 80118774 (4 bytes)
.data 0x80118774 # address
.data 0x00000004 # size
.data 0x88040016 # 80118774 => lbz r0, [r4 + 0x0016]
# region @ 80118780 (4 bytes)
.data 0x80118780 # address
.data 0x00000004 # size
.data 0x88040017 # 80118780 => lbz r0, [r4 + 0x0017]
# region @ 80118EA4 (4 bytes)
.data 0x80118EA4 # address
.data 0x00000004 # size
.data 0x4BEF379C # 80118EA4 => b -0x0010C864 /* 8000C640 */
# region @ 8011CC7C (12 bytes)
.data 0x8011CC7C # address
.data 0x0000000C # size
.data 0x7C030378 # 8011CC7C => mr r3, r0
.data 0x3863FFFF # 8011CC80 => subi r3, r3, 0x0001
.data 0x4BFFFFE8 # 8011CC84 => b -0x00000018 /* 8011CC6C */
# region @ 8011CD38 (12 bytes)
.data 0x8011CD38 # address
.data 0x0000000C # size
.data 0x7C030378 # 8011CD38 => mr r3, r0
.data 0x3863FFFF # 8011CD3C => subi r3, r3, 0x0001
.data 0x4BFFFFE8 # 8011CD40 => b -0x00000018 /* 8011CD28 */
# region @ 8011CD88 (12 bytes)
.data 0x8011CD88 # address
.data 0x0000000C # size
.data 0x7C040378 # 8011CD88 => mr r4, r0
.data 0x3884FFFF # 8011CD8C => subi r4, r4, 0x0001
.data 0x4BFFFFE8 # 8011CD90 => b -0x00000018 /* 8011CD78 */
# region @ 80166800 (8 bytes)
.data 0x80166800 # address
.data 0x00000008 # size
.data 0x3C604005 # 80166800 => lis r3, 0x4005
.data 0x4800009C # 80166804 => b +0x0000009C /* 801668A0 */
# region @ 8016689C (4 bytes)
.data 0x8016689C # address
.data 0x00000004 # size
.data 0x4800001C # 8016689C => b +0x0000001C /* 801668B8 */
# region @ 80171130 (4 bytes)
.data 0x80171130 # address
.data 0x00000004 # size
.data 0x4BE9AAA0 # 80171130 => b -0x00165560 /* 8000BBD0 */
# region @ 80171150 (4 bytes)
.data 0x80171150 # address
.data 0x00000004 # size
.data 0x60800420 # 80171150 => ori r0, r4, 0x0420
# region @ 80184384 (4 bytes)
.data 0x80184384 # address
.data 0x00000004 # size
.data 0x4BE87244 # 80184384 => b -0x00178DBC /* 8000B5C8 */
# region @ 801843C4 (4 bytes)
.data 0x801843C4 # address
.data 0x00000004 # size
.data 0x60000000 # 801843C4 => nop
# region @ 80189F54 (4 bytes)
.data 0x80189F54 # address
.data 0x00000004 # size
.data 0x60000000 # 80189F54 => nop
# region @ 801938D8 (4 bytes)
.data 0x801938D8 # address
.data 0x00000004 # size
.data 0x60000000 # 801938D8 => nop
# region @ 801B9D50 (4 bytes)
.data 0x801B9D50 # address
.data 0x00000004 # size
.data 0x4BE526B8 # 801B9D50 => b -0x001AD948 /* 8000C408 */
# region @ 801BA024 (4 bytes)
.data 0x801BA024 # address
.data 0x00000004 # size
.data 0x4BE51064 # 801BA024 => b -0x001AEF9C /* 8000B088 */
# region @ 801C6490 (4 bytes)
.data 0x801C6490 # address
.data 0x00000004 # size
.data 0x389F02FC # 801C6490 => addi r4, r31, 0x02FC
# region @ 801CA810 (4 bytes)
.data 0x801CA810 # address
.data 0x00000004 # size
.data 0x48000010 # 801CA810 => b +0x00000010 /* 801CA820 */
# region @ 8021E9D0 (4 bytes)
.data 0x8021E9D0 # address
.data 0x00000004 # size
.data 0x4BDEDD00 # 8021E9D0 => b -0x00212300 /* 8000C6D0 */
# region @ 80221E90 (4 bytes)
.data 0x80221E90 # address
.data 0x00000004 # size
.data 0x4BDEA850 # 80221E90 => b -0x002157B0 /* 8000C6E0 */
# region @ 8022ACC4 (4 bytes)
.data 0x8022ACC4 # address
.data 0x00000004 # size
.data 0x2C000001 # 8022ACC4 => cmpwi r0, 1
# region @ 8022B4C4 (4 bytes)
.data 0x8022B4C4 # address
.data 0x00000004 # size
.data 0x3880FF00 # 8022B4C4 => li r4, 0xFFFFFF00
# region @ 8022B4F4 (4 bytes)
.data 0x8022B4F4 # address
.data 0x00000004 # size
.data 0x3880FE80 # 8022B4F4 => li r4, 0xFFFFFE80
# region @ 8022B524 (4 bytes)
.data 0x8022B524 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 8022B524 => li r4, 0xFFFFFDB0
# region @ 8022E1C0 (4 bytes)
.data 0x8022E1C0 # address
.data 0x00000004 # size
.data 0x60000000 # 8022E1C0 => nop
# region @ 8022E8F4 (4 bytes)
.data 0x8022E8F4 # address
.data 0x00000004 # size
.data 0x41810630 # 8022E8F4 => bgt +0x00000630 /* 8022EF24 */
# region @ 8022FC18 (4 bytes)
.data 0x8022FC18 # address
.data 0x00000004 # size
.data 0x3880FF00 # 8022FC18 => li r4, 0xFFFFFF00
# region @ 8022FC48 (4 bytes)
.data 0x8022FC48 # address
.data 0x00000004 # size
.data 0x3880FE80 # 8022FC48 => li r4, 0xFFFFFE80
# region @ 8022FC78 (4 bytes)
.data 0x8022FC78 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 8022FC78 => li r4, 0xFFFFFDB0
# region @ 80230424 (4 bytes)
.data 0x80230424 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80230424 => li r4, 0xFFFFFF00
# region @ 80230454 (4 bytes)
.data 0x80230454 # address
.data 0x00000004 # size
.data 0x3880FE80 # 80230454 => li r4, 0xFFFFFE80
# region @ 80230484 (4 bytes)
.data 0x80230484 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80230484 => li r4, 0xFFFFFDB0
# region @ 80231A28 (4 bytes)
.data 0x80231A28 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80231A28 => li r4, 0xFFFFFF00
# region @ 80231A58 (4 bytes)
.data 0x80231A58 # address
.data 0x00000004 # size
.data 0x3880FE80 # 80231A58 => li r4, 0xFFFFFE80
# region @ 80231A88 (4 bytes)
.data 0x80231A88 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80231A88 => li r4, 0xFFFFFDB0
# region @ 80232798 (4 bytes)
.data 0x80232798 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80232798 => li r4, 0xFFFFFF00
# region @ 802327C8 (4 bytes)
.data 0x802327C8 # address
.data 0x00000004 # size
.data 0x3880FE80 # 802327C8 => li r4, 0xFFFFFE80
# region @ 802327F8 (4 bytes)
.data 0x802327F8 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 802327F8 => li r4, 0xFFFFFDB0
# region @ 8023308C (4 bytes)
.data 0x8023308C # address
.data 0x00000004 # size
.data 0x3880FF00 # 8023308C => li r4, 0xFFFFFF00
# region @ 802330C4 (4 bytes)
.data 0x802330C4 # address
.data 0x00000004 # size
.data 0x3880FE80 # 802330C4 => li r4, 0xFFFFFE80
# region @ 802330FC (4 bytes)
.data 0x802330FC # address
.data 0x00000004 # size
.data 0x3880FDB0 # 802330FC => li r4, 0xFFFFFDB0
# region @ 80235138 (4 bytes)
.data 0x80235138 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80235138 => li r4, 0xFFFFFF00
# region @ 80235168 (4 bytes)
.data 0x80235168 # address
.data 0x00000004 # size
.data 0x3880FE80 # 80235168 => li r4, 0xFFFFFE80
# region @ 80235198 (4 bytes)
.data 0x80235198 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80235198 => li r4, 0xFFFFFDB0
# region @ 80237764 (4 bytes)
.data 0x80237764 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80237764 => li r4, 0xFFFFFF00
# region @ 802377A0 (4 bytes)
.data 0x802377A0 # address
.data 0x00000004 # size
.data 0x3880FE80 # 802377A0 => li r4, 0xFFFFFE80
# region @ 802377DC (4 bytes)
.data 0x802377DC # address
.data 0x00000004 # size
.data 0x3880FDB0 # 802377DC => li r4, 0xFFFFFDB0
# region @ 80237F3C (4 bytes)
.data 0x80237F3C # address
.data 0x00000004 # size
.data 0x3880FF00 # 80237F3C => li r4, 0xFFFFFF00
# region @ 80237F6C (4 bytes)
.data 0x80237F6C # address
.data 0x00000004 # size
.data 0x3880FE80 # 80237F6C => li r4, 0xFFFFFE80
# region @ 80237F9C (4 bytes)
.data 0x80237F9C # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80237F9C => li r4, 0xFFFFFDB0
# region @ 80238950 (4 bytes)
.data 0x80238950 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80238950 => li r4, 0xFFFFFF00
# region @ 80238980 (4 bytes)
.data 0x80238980 # address
.data 0x00000004 # size
.data 0x3880FE80 # 80238980 => li r4, 0xFFFFFE80
# region @ 802389B0 (4 bytes)
.data 0x802389B0 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 802389B0 => li r4, 0xFFFFFDB0
# region @ 80239328 (4 bytes)
.data 0x80239328 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80239328 => li r4, 0xFFFFFF00
# region @ 80239358 (4 bytes)
.data 0x80239358 # address
.data 0x00000004 # size
.data 0x3880FE80 # 80239358 => li r4, 0xFFFFFE80
# region @ 80239388 (4 bytes)
.data 0x80239388 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80239388 => li r4, 0xFFFFFDB0
# region @ 8023CC58 (4 bytes)
.data 0x8023CC58 # address
.data 0x00000004 # size
.data 0x3880FF00 # 8023CC58 => li r4, 0xFFFFFF00
# region @ 8023CC88 (4 bytes)
.data 0x8023CC88 # address
.data 0x00000004 # size
.data 0x3880FE80 # 8023CC88 => li r4, 0xFFFFFE80
# region @ 8023CCB8 (4 bytes)
.data 0x8023CCB8 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 8023CCB8 => li r4, 0xFFFFFDB0
# region @ 80251C68 (4 bytes)
.data 0x80251C68 # address
.data 0x00000004 # size
.data 0x60000000 # 80251C68 => nop
# region @ 80269B5C (4 bytes)
.data 0x80269B5C # address
.data 0x00000004 # size
.data 0x60000000 # 80269B5C => nop
# region @ 8026F6FC (4 bytes)
.data 0x8026F6FC # address
.data 0x00000004 # size
.data 0x3884AAFA # 8026F6FC => subi r4, r4, 0x5506
# region @ 8026F810 (4 bytes)
.data 0x8026F810 # address
.data 0x00000004 # size
.data 0x3863AAFA # 8026F810 => subi r3, r3, 0x5506
# region @ 8026F898 (4 bytes)
.data 0x8026F898 # address
.data 0x00000004 # size
.data 0x3883AAFA # 8026F898 => subi r4, r3, 0x5506
# region @ 802BD474 (4 bytes)
.data 0x802BD474 # address
.data 0x00000004 # size
.data 0x4BD5050C # 802BD474 => b -0x002AFAF4 /* 8000D980 */
# region @ 802FDD28 (4 bytes)
.data 0x802FDD28 # address
.data 0x00000004 # size
.data 0x2C030001 # 802FDD28 => cmpwi r3, 1
# region @ 8030398C (28 bytes)
.data 0x8030398C # address
.data 0x0000001C # size
.data 0x48000020 # 8030398C => b +0x00000020 /* 803039AC */
.data 0x3863A830 # 80303990 => subi r3, r3, 0x57D0
.data 0x800DB9C4 # 80303994 => lwz r0, [r13 - 0x463C]
.data 0x2C000023 # 80303998 => cmpwi r0, 35
.data 0x40820008 # 8030399C => bne +0x00000008 /* 803039A4 */
.data 0x3863FB28 # 803039A0 => subi r3, r3, 0x04D8
.data 0x4800008C # 803039A4 => b +0x0000008C /* 80303A30 */
# region @ 80303A2C (4 bytes)
.data 0x80303A2C # address
.data 0x00000004 # size
.data 0x4BFFFF64 # 80303A2C => b -0x0000009C /* 80303990 */
# region @ 80337570 (4 bytes)
.data 0x80337570 # address
.data 0x00000004 # size
.data 0x4BCD6430 # 80337570 => b -0x00329BD0 /* 8000D9A0 */
# region @ 80358440 (4 bytes)
.data 0x80358440 # address
.data 0x00000004 # size
.data 0x388001E8 # 80358440 => li r4, 0x01E8
# region @ 80358464 (4 bytes)
.data 0x80358464 # address
.data 0x00000004 # size
.data 0x4BCB5D7D # 80358464 => bl -0x0034A284 /* 8000E1E0 */
# region @ 803584D4 (4 bytes)
.data 0x803584D4 # address
.data 0x00000004 # size
.data 0x388001E8 # 803584D4 => li r4, 0x01E8
# region @ 803584E4 (4 bytes)
.data 0x803584E4 # address
.data 0x00000004 # size
.data 0x4BCB5CFD # 803584E4 => bl -0x0034A304 /* 8000E1E0 */
# region @ 804B8990 (8 bytes)
.data 0x804B8990 # address
.data 0x00000008 # size
.data 0x70808080 # 804B8990 => andi. r0, r4, 0x8080
.data 0x60707070 # 804B8994 => ori r16, r3, 0x7070
# region @ 804CC1E4 (4 bytes)
.data 0x804CC1E4 # address
.data 0x00000004 # size
.data 0x0000001E # 804CC1E4 => .invalid
# region @ 804CC23C (4 bytes)
.data 0x804CC23C # address
.data 0x00000004 # size
.data 0x00000028 # 804CC23C => .invalid
# region @ 804CC268 (4 bytes)
.data 0x804CC268 # address
.data 0x00000004 # size
.data 0x00000032 # 804CC268 => .invalid
# region @ 804CC294 (4 bytes)
.data 0x804CC294 # address
.data 0x00000004 # size
.data 0x0000003C # 804CC294 => .invalid
# region @ 804CC2A4 (4 bytes)
.data 0x804CC2A4 # address
.data 0x00000004 # size
.data 0x0018003C # 804CC2A4 => .invalid
# region @ 804CC4FC (4 bytes)
.data 0x804CC4FC # address
.data 0x00000004 # size
.data 0x00000028 # 804CC4FC => .invalid
# region @ 804D0E58 (4 bytes)
.data 0x804D0E58 # address
.data 0x00000004 # size
.data 0xFF0074EE # 804D0E58 => fsel f24, f0, f14, f19
# region @ 805DAAB4 (4 bytes)
.data 0x805DAAB4 # address
.data 0x00000004 # size
.data 0x435C0000 # 805DAAB4 => bc 26, 28, +0x00000000 /* 805DAAB4 */
# region @ 805DC750 (4 bytes)
.data 0x805DC750 # address
.data 0x00000004 # size
.data 0x46AFC800 # 805DC750 => .invalid sc
# region @ 805DC9F0 (4 bytes)
.data 0x805DC9F0 # address
.data 0x00000004 # size
.data 0x43480000 # 805DC9F0 => bc 26, 8, +0x00000000 /* 805DC9F0 */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,562 @@
.meta name="Bug fixes"
.meta description="Fix many minor\ngameplay, sound,\nand graphical bugs"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000B088 (88 bytes)
.data 0x8000B088 # address
.data 0x00000058 # size
.data 0x7FA3EB78 # 8000B088 => mr r3, r29
.data 0x38800000 # 8000B08C => li r4, 0x0000
.data 0x481AE725 # 8000B090 => bl +0x001AE724 /* 801B97B4 */
.data 0x7FA3EB78 # 8000B094 => mr r3, r29
.data 0x481AE9F4 # 8000B098 => b +0x001AE9F4 /* 801B9A8C */
.data 0x881F0000 # 8000B09C => lbz r0, [r31]
.data 0x28090001 # 8000B0A0 => cmplwi r9, 1
.data 0x4082000C # 8000B0A4 => bne +0x0000000C /* 8000B0B0 */
.data 0x881F0001 # 8000B0A8 => lbz r0, [r31 + 0x0001]
.data 0x3BFF0002 # 8000B0AC => addi r31, r31, 0x0002
.data 0x481008C4 # 8000B0B0 => b +0x001008C4 /* 8010B974 */
.data 0x39200000 # 8000B0B4 => li r9, 0x0000
.data 0x48100855 # 8000B0B8 => bl +0x00100854 /* 8010B90C */
.data 0x7F43D378 # 8000B0BC => mr r3, r26
.data 0x7F64DB78 # 8000B0C0 => mr r4, r27
.data 0x7F85E378 # 8000B0C4 => mr r5, r28
.data 0x7FA6EB78 # 8000B0C8 => mr r6, r29
.data 0x7FC7F378 # 8000B0CC => mr r7, r30
.data 0x7FE8FB78 # 8000B0D0 => mr r8, r31
.data 0x39200001 # 8000B0D4 => li r9, 0x0001
.data 0x48100835 # 8000B0D8 => bl +0x00100834 /* 8010B90C */
.data 0x48102CC0 # 8000B0DC => b +0x00102CC0 /* 8010DD9C */
# region @ 8000B5C8 (20 bytes)
.data 0x8000B5C8 # address
.data 0x00000014 # size
.data 0x80630098 # 8000B5C8 => lwz r3, [r3 + 0x0098]
.data 0x483D46F5 # 8000B5CC => bl +0x003D46F4 /* 803DFCC0 */
.data 0x807F042C # 8000B5D0 => lwz r3, [r31 + 0x042C]
.data 0x809F0430 # 8000B5D4 => lwz r4, [r31 + 0x0430]
.data 0x481788C0 # 8000B5D8 => b +0x001788C0 /* 80183E98 */
# region @ 8000BBD0 (32 bytes)
.data 0x8000BBD0 # address
.data 0x00000020 # size
.data 0x809F0370 # 8000BBD0 => lwz r4, [r31 + 0x0370]
.data 0x3884FC00 # 8000BBD4 => subi r4, r4, 0x0400
.data 0x909F0370 # 8000BBD8 => stw [r31 + 0x0370], r4
.data 0x807F0014 # 8000BBDC => lwz r3, [r31 + 0x0014]
.data 0x28030000 # 8000BBE0 => cmplwi r3, 0
.data 0x41820008 # 8000BBE4 => beq +0x00000008 /* 8000BBEC */
.data 0x90830060 # 8000BBE8 => stw [r3 + 0x0060], r4
.data 0x4816506C # 8000BBEC => b +0x0016506C /* 80170C58 */
# region @ 8000C3F8 (124 bytes)
.data 0x8000C3F8 # address
.data 0x0000007C # size
.data 0x28040000 # 8000C3F8 => cmplwi r4, 0
.data 0x4D820020 # 8000C3FC => beqlr
.data 0x9421FFF0 # 8000C400 => stwu [r1 - 0x0010], r1
.data 0x481AD3B4 # 8000C404 => b +0x001AD3B4 /* 801B97B8 */
.data 0x9421FFE0 # 8000C408 => stwu [r1 - 0x0020], r1
.data 0x7C0802A6 # 8000C40C => mflr r0
.data 0x90010024 # 8000C410 => stw [r1 + 0x0024], r0
.data 0xBF410008 # 8000C414 => stmw [r1 + 0x0008], r26
.data 0x7C7F1B78 # 8000C418 => mr r31, r3
.data 0x4BFFFFDD # 8000C41C => bl -0x00000024 /* 8000C3F8 */
.data 0x3BC00000 # 8000C420 => li r30, 0x0000
.data 0x3BBF0D04 # 8000C424 => addi r29, r31, 0x0D04
.data 0x837F032C # 8000C428 => lwz r27, [r31 + 0x032C]
.data 0x839D0000 # 8000C42C => lwz r28, [r29]
.data 0x7F83E379 # 8000C430 => mr. r3, r28
.data 0x41820018 # 8000C434 => beq +0x00000018 /* 8000C44C */
.data 0x38800001 # 8000C438 => li r4, 0x0001
.data 0x480FEADD # 8000C43C => bl +0x000FEADC /* 8010AF18 */
.data 0x7F83E378 # 8000C440 => mr r3, r28
.data 0x38800001 # 8000C444 => li r4, 0x0001
.data 0x480FEC4D # 8000C448 => bl +0x000FEC4C /* 8010B094 */
.data 0x3BBD0004 # 8000C44C => addi r29, r29, 0x0004
.data 0x3BDE0001 # 8000C450 => addi r30, r30, 0x0001
.data 0x2C1E000D # 8000C454 => cmpwi r30, 13
.data 0x4180FFD4 # 8000C458 => blt -0x0000002C /* 8000C42C */
.data 0x937F032C # 8000C45C => stw [r31 + 0x032C], r27
.data 0xBB410008 # 8000C460 => lmw r26, [r1 + 0x0008]
.data 0x80010024 # 8000C464 => lwz r0, [r1 + 0x0024]
.data 0x7C0803A6 # 8000C468 => mtlr r0
.data 0x38210020 # 8000C46C => addi r1, r1, 0x0020
.data 0x4E800020 # 8000C470 => blr
# region @ 8000C640 (20 bytes)
.data 0x8000C640 # address
.data 0x00000014 # size
.data 0x54800673 # 8000C640 => rlwinm. r0, r4, 0, 25, 25
.data 0x41820008 # 8000C644 => beq +0x00000008 /* 8000C64C */
.data 0x38800000 # 8000C648 => li r4, 0x0000
.data 0x38040009 # 8000C64C => addi r0, r4, 0x0009
.data 0x4810C694 # 8000C650 => b +0x0010C694 /* 80118CE4 */
# region @ 8000C6D0 (32 bytes)
.data 0x8000C6D0 # address
.data 0x00000020 # size
.data 0x38000001 # 8000C6D0 => li r0, 0x0001
.data 0x901D0054 # 8000C6D4 => stw [r29 + 0x0054], r0
.data 0x807D0024 # 8000C6D8 => lwz r3, [r29 + 0x0024]
.data 0x482109C0 # 8000C6DC => b +0x002109C0 /* 8021D09C */
.data 0x38000001 # 8000C6E0 => li r0, 0x0001
.data 0x901F0378 # 8000C6E4 => stw [r31 + 0x0378], r0
.data 0x807F0024 # 8000C6E8 => lwz r3, [r31 + 0x0024]
.data 0x48165AA0 # 8000C6EC => b +0x00165AA0 /* 8017218C */
# region @ 8000C8A0 (20 bytes)
.data 0x8000C8A0 # address
.data 0x00000014 # size
.data 0x1C00000A # 8000C8A0 => mulli r0, r0, 10
.data 0x57E407BD # 8000C8A4 => rlwinm. r4, r31, 0, 30, 30
.data 0x41820008 # 8000C8A8 => beq +0x00000008 /* 8000C8B0 */
.data 0x7FA00734 # 8000C8AC => extsh r0, r29
.data 0x48105DB8 # 8000C8B0 => b +0x00105DB8 /* 80112668 */
# region @ 8000C8C0 (16 bytes)
.data 0x8000C8C0 # address
.data 0x00000010 # size
.data 0x7000000F # 8000C8C0 => andi. r0, r0, 0x000F
.data 0x7000004F # 8000C8C4 => andi. r0, r0, 0x004F
.data 0x2C000004 # 8000C8C8 => cmpwi r0, 4
.data 0x4E800020 # 8000C8CC => blr
# region @ 8000D980 (20 bytes)
.data 0x8000D980 # address
.data 0x00000014 # size
.data 0x807C0000 # 8000D980 => lwz r3, [r28]
.data 0x2C030013 # 8000D984 => cmpwi r3, 19
.data 0x40820008 # 8000D988 => bne +0x00000008 /* 8000D990 */
.data 0x38600002 # 8000D98C => li r3, 0x0002
.data 0x482ADB24 # 8000D990 => b +0x002ADB24 /* 802BB4B4 */
# region @ 8000D9A0 (24 bytes)
.data 0x8000D9A0 # address
.data 0x00000018 # size
.data 0xC042FC78 # 8000D9A0 => lfs f2, [r2 - 0x0388]
.data 0x807E0030 # 8000D9A4 => lwz r3, [r30 + 0x0030]
.data 0x70630020 # 8000D9A8 => andi. r3, r3, 0x0020
.data 0x41820008 # 8000D9AC => beq +0x00000008 /* 8000D9B4 */
.data 0xC042FC90 # 8000D9B0 => lfs f2, [r2 - 0x0370]
.data 0x483276B0 # 8000D9B4 => b +0x003276B0 /* 80335064 */
# region @ 8000E1E0 (28 bytes)
.data 0x8000E1E0 # address
.data 0x0000001C # size
.data 0x7FC802A6 # 8000E1E0 => mflr r30
.data 0x38A00000 # 8000E1E4 => li r5, 0x0000
.data 0x38C0001E # 8000E1E8 => li r6, 0x001E
.data 0x38E00040 # 8000E1EC => li r7, 0x0040
.data 0x480782B1 # 8000E1F0 => bl +0x000782B0 /* 800864A0 */
.data 0x7FC803A6 # 8000E1F4 => mtlr r30
.data 0x4E800020 # 8000E1F8 => blr
# region @ 8001306C (4 bytes)
.data 0x8001306C # address
.data 0x00000004 # size
.data 0x4BFFFCC0 # 8001306C => b -0x00000340 /* 80012D2C */
# region @ 800142DC (4 bytes)
.data 0x800142DC # address
.data 0x00000004 # size
.data 0x4BFF85E5 # 800142DC => bl -0x00007A1C /* 8000C8C0 */
# region @ 80015D04 (4 bytes)
.data 0x80015D04 # address
.data 0x00000004 # size
.data 0x4BFF6BC1 # 80015D04 => bl -0x00009440 /* 8000C8C4 */
# region @ 80091528 (8 bytes)
.data 0x80091528 # address
.data 0x00000008 # size
.data 0x4800024D # 80091528 => bl +0x0000024C /* 80091774 */
.data 0xB3C3032C # 8009152C => sth [r3 + 0x032C], r30
# region @ 800BC750 (4 bytes)
.data 0x800BC750 # address
.data 0x00000004 # size
.data 0x48000010 # 800BC750 => b +0x00000010 /* 800BC760 */
# region @ 80101C14 (4 bytes)
.data 0x80101C14 # address
.data 0x00000004 # size
.data 0x60000000 # 80101C14 => nop
# region @ 80104B48 (4 bytes)
.data 0x80104B48 # address
.data 0x00000004 # size
.data 0x4182000C # 80104B48 => beq +0x0000000C /* 80104B54 */
# region @ 80107478 (4 bytes)
.data 0x80107478 # address
.data 0x00000004 # size
.data 0x4800000C # 80107478 => b +0x0000000C /* 80107484 */
# region @ 8010748C (4 bytes)
.data 0x8010748C # address
.data 0x00000004 # size
.data 0x7C030378 # 8010748C => mr r3, r0
# region @ 8010B970 (4 bytes)
.data 0x8010B970 # address
.data 0x00000004 # size
.data 0x4BEFF72C # 8010B970 => b -0x001008D4 /* 8000B09C */
# region @ 8010DD98 (4 bytes)
.data 0x8010DD98 # address
.data 0x00000004 # size
.data 0x4BEFD31C # 8010DD98 => b -0x00102CE4 /* 8000B0B4 */
# region @ 80112664 (4 bytes)
.data 0x80112664 # address
.data 0x00000004 # size
.data 0x4BEFA23C # 80112664 => b -0x00105DC4 /* 8000C8A0 */
# region @ 80114378 (4 bytes)
.data 0x80114378 # address
.data 0x00000004 # size
.data 0x38000012 # 80114378 => li r0, 0x0012
# region @ 801185B0 (4 bytes)
.data 0x801185B0 # address
.data 0x00000004 # size
.data 0x88040016 # 801185B0 => lbz r0, [r4 + 0x0016]
# region @ 801185BC (4 bytes)
.data 0x801185BC # address
.data 0x00000004 # size
.data 0x88040017 # 801185BC => lbz r0, [r4 + 0x0017]
# region @ 80118CE0 (4 bytes)
.data 0x80118CE0 # address
.data 0x00000004 # size
.data 0x4BEF3960 # 80118CE0 => b -0x0010C6A0 /* 8000C640 */
# region @ 8011CA90 (12 bytes)
.data 0x8011CA90 # address
.data 0x0000000C # size
.data 0x7C030378 # 8011CA90 => mr r3, r0
.data 0x3863FFFF # 8011CA94 => subi r3, r3, 0x0001
.data 0x4BFFFFE8 # 8011CA98 => b -0x00000018 /* 8011CA80 */
# region @ 8011CB4C (12 bytes)
.data 0x8011CB4C # address
.data 0x0000000C # size
.data 0x7C030378 # 8011CB4C => mr r3, r0
.data 0x3863FFFF # 8011CB50 => subi r3, r3, 0x0001
.data 0x4BFFFFE8 # 8011CB54 => b -0x00000018 /* 8011CB3C */
# region @ 8011CB9C (12 bytes)
.data 0x8011CB9C # address
.data 0x0000000C # size
.data 0x7C040378 # 8011CB9C => mr r4, r0
.data 0x3884FFFF # 8011CBA0 => subi r4, r4, 0x0001
.data 0x4BFFFFE8 # 8011CBA4 => b -0x00000018 /* 8011CB8C */
# region @ 80166324 (8 bytes)
.data 0x80166324 # address
.data 0x00000008 # size
.data 0x3C604005 # 80166324 => lis r3, 0x4005
.data 0x4800009C # 80166328 => b +0x0000009C /* 801663C4 */
# region @ 801663C0 (4 bytes)
.data 0x801663C0 # address
.data 0x00000004 # size
.data 0x4800001C # 801663C0 => b +0x0000001C /* 801663DC */
# region @ 80170C54 (4 bytes)
.data 0x80170C54 # address
.data 0x00000004 # size
.data 0x4BE9AF7C # 80170C54 => b -0x00165084 /* 8000BBD0 */
# region @ 80170C74 (4 bytes)
.data 0x80170C74 # address
.data 0x00000004 # size
.data 0x60800420 # 80170C74 => ori r0, r4, 0x0420
# region @ 80172188 (4 bytes)
.data 0x80172188 # address
.data 0x00000004 # size
.data 0x4BE9A558 # 80172188 => b -0x00165AA8 /* 8000C6E0 */
# region @ 80183E94 (4 bytes)
.data 0x80183E94 # address
.data 0x00000004 # size
.data 0x4BE87734 # 80183E94 => b -0x001788CC /* 8000B5C8 */
# region @ 80183ED4 (4 bytes)
.data 0x80183ED4 # address
.data 0x00000004 # size
.data 0x60000000 # 80183ED4 => nop
# region @ 80189A54 (4 bytes)
.data 0x80189A54 # address
.data 0x00000004 # size
.data 0x60000000 # 80189A54 => nop
# region @ 801933DC (4 bytes)
.data 0x801933DC # address
.data 0x00000004 # size
.data 0x60000000 # 801933DC => nop
# region @ 801B97B4 (4 bytes)
.data 0x801B97B4 # address
.data 0x00000004 # size
.data 0x4BE52C54 # 801B97B4 => b -0x001AD3AC /* 8000C408 */
# region @ 801B9A88 (4 bytes)
.data 0x801B9A88 # address
.data 0x00000004 # size
.data 0x4BE51600 # 801B9A88 => b -0x001AEA00 /* 8000B088 */
# region @ 801C5EA4 (4 bytes)
.data 0x801C5EA4 # address
.data 0x00000004 # size
.data 0x389F02FC # 801C5EA4 => addi r4, r31, 0x02FC
# region @ 801CA1F4 (4 bytes)
.data 0x801CA1F4 # address
.data 0x00000004 # size
.data 0x48000010 # 801CA1F4 => b +0x00000010 /* 801CA204 */
# region @ 8021D098 (4 bytes)
.data 0x8021D098 # address
.data 0x00000004 # size
.data 0x4BDEF638 # 8021D098 => b -0x002109C8 /* 8000C6D0 */
# region @ 80229354 (4 bytes)
.data 0x80229354 # address
.data 0x00000004 # size
.data 0x2C000001 # 80229354 => cmpwi r0, 1
# region @ 80229B54 (4 bytes)
.data 0x80229B54 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80229B54 => li r4, 0xFFFFFF00
# region @ 80229B84 (4 bytes)
.data 0x80229B84 # address
.data 0x00000004 # size
.data 0x3880FE80 # 80229B84 => li r4, 0xFFFFFE80
# region @ 80229BB4 (4 bytes)
.data 0x80229BB4 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80229BB4 => li r4, 0xFFFFFDB0
# region @ 8022C850 (4 bytes)
.data 0x8022C850 # address
.data 0x00000004 # size
.data 0x60000000 # 8022C850 => nop
# region @ 8022CF84 (4 bytes)
.data 0x8022CF84 # address
.data 0x00000004 # size
.data 0x41810630 # 8022CF84 => bgt +0x00000630 /* 8022D5B4 */
# region @ 8022D278 (4 bytes)
.data 0x8022D278 # address
.data 0x00000004 # size
.data 0x4181033C # 8022D278 => bgt +0x0000033C /* 8022D5B4 */
# region @ 8022D36C (4 bytes)
.data 0x8022D36C # address
.data 0x00000004 # size
.data 0x41810248 # 8022D36C => bgt +0x00000248 /* 8022D5B4 */
# region @ 8022E2A8 (4 bytes)
.data 0x8022E2A8 # address
.data 0x00000004 # size
.data 0x3880FF00 # 8022E2A8 => li r4, 0xFFFFFF00
# region @ 8022E2D8 (4 bytes)
.data 0x8022E2D8 # address
.data 0x00000004 # size
.data 0x3880FE80 # 8022E2D8 => li r4, 0xFFFFFE80
# region @ 8022E308 (4 bytes)
.data 0x8022E308 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 8022E308 => li r4, 0xFFFFFDB0
# region @ 8022EAB4 (4 bytes)
.data 0x8022EAB4 # address
.data 0x00000004 # size
.data 0x3880FF00 # 8022EAB4 => li r4, 0xFFFFFF00
# region @ 8022EAE4 (4 bytes)
.data 0x8022EAE4 # address
.data 0x00000004 # size
.data 0x3880FE80 # 8022EAE4 => li r4, 0xFFFFFE80
# region @ 8022EB14 (4 bytes)
.data 0x8022EB14 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 8022EB14 => li r4, 0xFFFFFDB0
# region @ 802300B8 (4 bytes)
.data 0x802300B8 # address
.data 0x00000004 # size
.data 0x3880FF00 # 802300B8 => li r4, 0xFFFFFF00
# region @ 802300E8 (4 bytes)
.data 0x802300E8 # address
.data 0x00000004 # size
.data 0x3880FE80 # 802300E8 => li r4, 0xFFFFFE80
# region @ 80230118 (4 bytes)
.data 0x80230118 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80230118 => li r4, 0xFFFFFDB0
# region @ 80230E08 (4 bytes)
.data 0x80230E08 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80230E08 => li r4, 0xFFFFFF00
# region @ 80230E38 (4 bytes)
.data 0x80230E38 # address
.data 0x00000004 # size
.data 0x3880FE80 # 80230E38 => li r4, 0xFFFFFE80
# region @ 80230E68 (4 bytes)
.data 0x80230E68 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80230E68 => li r4, 0xFFFFFDB0
# region @ 802316FC (4 bytes)
.data 0x802316FC # address
.data 0x00000004 # size
.data 0x3880FF00 # 802316FC => li r4, 0xFFFFFF00
# region @ 80231734 (4 bytes)
.data 0x80231734 # address
.data 0x00000004 # size
.data 0x3880FE80 # 80231734 => li r4, 0xFFFFFE80
# region @ 8023176C (4 bytes)
.data 0x8023176C # address
.data 0x00000004 # size
.data 0x3880FDB0 # 8023176C => li r4, 0xFFFFFDB0
# region @ 802337A8 (4 bytes)
.data 0x802337A8 # address
.data 0x00000004 # size
.data 0x3880FF00 # 802337A8 => li r4, 0xFFFFFF00
# region @ 802337D8 (4 bytes)
.data 0x802337D8 # address
.data 0x00000004 # size
.data 0x3880FE80 # 802337D8 => li r4, 0xFFFFFE80
# region @ 80233808 (4 bytes)
.data 0x80233808 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80233808 => li r4, 0xFFFFFDB0
# region @ 80235DD4 (4 bytes)
.data 0x80235DD4 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80235DD4 => li r4, 0xFFFFFF00
# region @ 80235E10 (4 bytes)
.data 0x80235E10 # address
.data 0x00000004 # size
.data 0x3880FE80 # 80235E10 => li r4, 0xFFFFFE80
# region @ 80235E4C (4 bytes)
.data 0x80235E4C # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80235E4C => li r4, 0xFFFFFDB0
# region @ 802365AC (4 bytes)
.data 0x802365AC # address
.data 0x00000004 # size
.data 0x3880FF00 # 802365AC => li r4, 0xFFFFFF00
# region @ 802365DC (4 bytes)
.data 0x802365DC # address
.data 0x00000004 # size
.data 0x3880FE80 # 802365DC => li r4, 0xFFFFFE80
# region @ 8023660C (4 bytes)
.data 0x8023660C # address
.data 0x00000004 # size
.data 0x3880FDB0 # 8023660C => li r4, 0xFFFFFDB0
# region @ 80236FC0 (4 bytes)
.data 0x80236FC0 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80236FC0 => li r4, 0xFFFFFF00
# region @ 80236FF0 (4 bytes)
.data 0x80236FF0 # address
.data 0x00000004 # size
.data 0x3880FE80 # 80236FF0 => li r4, 0xFFFFFE80
# region @ 80237020 (4 bytes)
.data 0x80237020 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80237020 => li r4, 0xFFFFFDB0
# region @ 80237998 (4 bytes)
.data 0x80237998 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80237998 => li r4, 0xFFFFFF00
# region @ 802379C8 (4 bytes)
.data 0x802379C8 # address
.data 0x00000004 # size
.data 0x3880FE80 # 802379C8 => li r4, 0xFFFFFE80
# region @ 802379F8 (4 bytes)
.data 0x802379F8 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 802379F8 => li r4, 0xFFFFFDB0
# region @ 8023B2C8 (4 bytes)
.data 0x8023B2C8 # address
.data 0x00000004 # size
.data 0x3880FF00 # 8023B2C8 => li r4, 0xFFFFFF00
# region @ 8023B2F8 (4 bytes)
.data 0x8023B2F8 # address
.data 0x00000004 # size
.data 0x3880FE80 # 8023B2F8 => li r4, 0xFFFFFE80
# region @ 8023B328 (4 bytes)
.data 0x8023B328 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 8023B328 => li r4, 0xFFFFFDB0
# region @ 80250264 (4 bytes)
.data 0x80250264 # address
.data 0x00000004 # size
.data 0x60000000 # 80250264 => nop
# region @ 80267DDC (4 bytes)
.data 0x80267DDC # address
.data 0x00000004 # size
.data 0x60000000 # 80267DDC => nop
# region @ 8026DA74 (4 bytes)
.data 0x8026DA74 # address
.data 0x00000004 # size
.data 0x3884AAFA # 8026DA74 => subi r4, r4, 0x5506
# region @ 8026DB88 (4 bytes)
.data 0x8026DB88 # address
.data 0x00000004 # size
.data 0x3863AAFA # 8026DB88 => subi r3, r3, 0x5506
# region @ 8026DC10 (4 bytes)
.data 0x8026DC10 # address
.data 0x00000004 # size
.data 0x3883AAFA # 8026DC10 => subi r4, r3, 0x5506
# region @ 802BB4B0 (4 bytes)
.data 0x802BB4B0 # address
.data 0x00000004 # size
.data 0x4BD524D0 # 802BB4B0 => b -0x002ADB30 /* 8000D980 */
# region @ 802FB99C (4 bytes)
.data 0x802FB99C # address
.data 0x00000004 # size
.data 0x2C030001 # 802FB99C => cmpwi r3, 1
# region @ 80301600 (28 bytes)
.data 0x80301600 # address
.data 0x0000001C # size
.data 0x48000020 # 80301600 => b +0x00000020 /* 80301620 */
.data 0x3863A830 # 80301604 => subi r3, r3, 0x57D0
.data 0x800DB98C # 80301608 => lwz r0, [r13 - 0x4674]
.data 0x2C000023 # 8030160C => cmpwi r0, 35
.data 0x40820008 # 80301610 => bne +0x00000008 /* 80301618 */
.data 0x3863FB28 # 80301614 => subi r3, r3, 0x04D8
.data 0x4800008C # 80301618 => b +0x0000008C /* 803016A4 */
# region @ 803016A0 (4 bytes)
.data 0x803016A0 # address
.data 0x00000004 # size
.data 0x4BFFFF64 # 803016A0 => b -0x0000009C /* 80301604 */
# region @ 80335060 (4 bytes)
.data 0x80335060 # address
.data 0x00000004 # size
.data 0x4BCD8940 # 80335060 => b -0x003276C0 /* 8000D9A0 */
# region @ 80355960 (4 bytes)
.data 0x80355960 # address
.data 0x00000004 # size
.data 0x388001E8 # 80355960 => li r4, 0x01E8
# region @ 80355984 (4 bytes)
.data 0x80355984 # address
.data 0x00000004 # size
.data 0x4BCB885D # 80355984 => bl -0x003477A4 /* 8000E1E0 */
# region @ 803559F4 (4 bytes)
.data 0x803559F4 # address
.data 0x00000004 # size
.data 0x388001E8 # 803559F4 => li r4, 0x01E8
# region @ 80355A04 (4 bytes)
.data 0x80355A04 # address
.data 0x00000004 # size
.data 0x4BCB87DD # 80355A04 => bl -0x00347824 /* 8000E1E0 */
# region @ 804B3738 (8 bytes)
.data 0x804B3738 # address
.data 0x00000008 # size
.data 0x70808080 # 804B3738 => andi. r0, r4, 0x8080
.data 0x60707070 # 804B373C => ori r16, r3, 0x7070
# region @ 804C6EE4 (4 bytes)
.data 0x804C6EE4 # address
.data 0x00000004 # size
.data 0x0000001E # 804C6EE4 => .invalid
# region @ 804C6F3C (4 bytes)
.data 0x804C6F3C # address
.data 0x00000004 # size
.data 0x00000028 # 804C6F3C => .invalid
# region @ 804C6F68 (4 bytes)
.data 0x804C6F68 # address
.data 0x00000004 # size
.data 0x00000032 # 804C6F68 => .invalid
# region @ 804C6F94 (4 bytes)
.data 0x804C6F94 # address
.data 0x00000004 # size
.data 0x0000003C # 804C6F94 => .invalid
# region @ 804C6FA4 (4 bytes)
.data 0x804C6FA4 # address
.data 0x00000004 # size
.data 0x0018003C # 804C6FA4 => .invalid
# region @ 804C71FC (4 bytes)
.data 0x804C71FC # address
.data 0x00000004 # size
.data 0x00000028 # 804C71FC => .invalid
# region @ 804CBB40 (4 bytes)
.data 0x804CBB40 # address
.data 0x00000004 # size
.data 0xFF0074EE # 804CBB40 => fsel f24, f0, f14, f19
# region @ 805C996C (4 bytes)
.data 0x805C996C # address
.data 0x00000004 # size
.data 0x435C0000 # 805C996C => bc 26, 28, +0x00000000 /* 805C996C */
# region @ 805CB608 (4 bytes)
.data 0x805CB608 # address
.data 0x00000004 # size
.data 0x46AFC800 # 805CB608 => .invalid sc
# region @ 805CB8A8 (4 bytes)
.data 0x805CB8A8 # address
.data 0x00000004 # size
.data 0x43480000 # 805CB8A8 => bc 26, 8, +0x00000000 /* 805CB8A8 */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,550 @@
.meta name="Bug fixes"
.meta description="Fix many minor\ngameplay, sound,\nand graphical bugs"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000B088 (88 bytes)
.data 0x8000B088 # address
.data 0x00000058 # size
.data 0x7FA3EB78 # 8000B088 => mr r3, r29
.data 0x38800000 # 8000B08C => li r4, 0x0000
.data 0x481AEB91 # 8000B090 => bl +0x001AEB90 /* 801B9C20 */
.data 0x7FA3EB78 # 8000B094 => mr r3, r29
.data 0x481AEE60 # 8000B098 => b +0x001AEE60 /* 801B9EF8 */
.data 0x881F0000 # 8000B09C => lbz r0, [r31]
.data 0x28090001 # 8000B0A0 => cmplwi r9, 1
.data 0x4082000C # 8000B0A4 => bne +0x0000000C /* 8000B0B0 */
.data 0x881F0001 # 8000B0A8 => lbz r0, [r31 + 0x0001]
.data 0x3BFF0002 # 8000B0AC => addi r31, r31, 0x0002
.data 0x48100AC4 # 8000B0B0 => b +0x00100AC4 /* 8010BB74 */
.data 0x39200000 # 8000B0B4 => li r9, 0x0000
.data 0x48100A55 # 8000B0B8 => bl +0x00100A54 /* 8010BB0C */
.data 0x7F43D378 # 8000B0BC => mr r3, r26
.data 0x7F64DB78 # 8000B0C0 => mr r4, r27
.data 0x7F85E378 # 8000B0C4 => mr r5, r28
.data 0x7FA6EB78 # 8000B0C8 => mr r6, r29
.data 0x7FC7F378 # 8000B0CC => mr r7, r30
.data 0x7FE8FB78 # 8000B0D0 => mr r8, r31
.data 0x39200001 # 8000B0D4 => li r9, 0x0001
.data 0x48100A35 # 8000B0D8 => bl +0x00100A34 /* 8010BB0C */
.data 0x48102EC0 # 8000B0DC => b +0x00102EC0 /* 8010DF9C */
# region @ 8000B5C8 (20 bytes)
.data 0x8000B5C8 # address
.data 0x00000014 # size
.data 0x80630098 # 8000B5C8 => lwz r3, [r3 + 0x0098]
.data 0x483D70D1 # 8000B5CC => bl +0x003D70D0 /* 803E269C */
.data 0x807F042C # 8000B5D0 => lwz r3, [r31 + 0x042C]
.data 0x809F0430 # 8000B5D4 => lwz r4, [r31 + 0x0430]
.data 0x48178C88 # 8000B5D8 => b +0x00178C88 /* 80184260 */
# region @ 8000BBD0 (32 bytes)
.data 0x8000BBD0 # address
.data 0x00000020 # size
.data 0x809F0370 # 8000BBD0 => lwz r4, [r31 + 0x0370]
.data 0x3884FC00 # 8000BBD4 => subi r4, r4, 0x0400
.data 0x909F0370 # 8000BBD8 => stw [r31 + 0x0370], r4
.data 0x807F0014 # 8000BBDC => lwz r3, [r31 + 0x0014]
.data 0x28030000 # 8000BBE0 => cmplwi r3, 0
.data 0x41820008 # 8000BBE4 => beq +0x00000008 /* 8000BBEC */
.data 0x90830060 # 8000BBE8 => stw [r3 + 0x0060], r4
.data 0x48165420 # 8000BBEC => b +0x00165420 /* 8017100C */
# region @ 8000C3F8 (124 bytes)
.data 0x8000C3F8 # address
.data 0x0000007C # size
.data 0x28040000 # 8000C3F8 => cmplwi r4, 0
.data 0x4D820020 # 8000C3FC => beqlr
.data 0x9421FFF0 # 8000C400 => stwu [r1 - 0x0010], r1
.data 0x481AD820 # 8000C404 => b +0x001AD820 /* 801B9C24 */
.data 0x9421FFE0 # 8000C408 => stwu [r1 - 0x0020], r1
.data 0x7C0802A6 # 8000C40C => mflr r0
.data 0x90010024 # 8000C410 => stw [r1 + 0x0024], r0
.data 0xBF410008 # 8000C414 => stmw [r1 + 0x0008], r26
.data 0x7C7F1B78 # 8000C418 => mr r31, r3
.data 0x4BFFFFDD # 8000C41C => bl -0x00000024 /* 8000C3F8 */
.data 0x3BC00000 # 8000C420 => li r30, 0x0000
.data 0x3BBF0D04 # 8000C424 => addi r29, r31, 0x0D04
.data 0x837F032C # 8000C428 => lwz r27, [r31 + 0x032C]
.data 0x839D0000 # 8000C42C => lwz r28, [r29]
.data 0x7F83E379 # 8000C430 => mr. r3, r28
.data 0x41820018 # 8000C434 => beq +0x00000018 /* 8000C44C */
.data 0x38800001 # 8000C438 => li r4, 0x0001
.data 0x480FECDD # 8000C43C => bl +0x000FECDC /* 8010B118 */
.data 0x7F83E378 # 8000C440 => mr r3, r28
.data 0x38800001 # 8000C444 => li r4, 0x0001
.data 0x480FEE4D # 8000C448 => bl +0x000FEE4C /* 8010B294 */
.data 0x3BBD0004 # 8000C44C => addi r29, r29, 0x0004
.data 0x3BDE0001 # 8000C450 => addi r30, r30, 0x0001
.data 0x2C1E000D # 8000C454 => cmpwi r30, 13
.data 0x4180FFD4 # 8000C458 => blt -0x0000002C /* 8000C42C */
.data 0x937F032C # 8000C45C => stw [r31 + 0x032C], r27
.data 0xBB410008 # 8000C460 => lmw r26, [r1 + 0x0008]
.data 0x80010024 # 8000C464 => lwz r0, [r1 + 0x0024]
.data 0x7C0803A6 # 8000C468 => mtlr r0
.data 0x38210020 # 8000C46C => addi r1, r1, 0x0020
.data 0x4E800020 # 8000C470 => blr
# region @ 8000C640 (20 bytes)
.data 0x8000C640 # address
.data 0x00000014 # size
.data 0x54800673 # 8000C640 => rlwinm. r0, r4, 0, 25, 25
.data 0x41820008 # 8000C644 => beq +0x00000008 /* 8000C64C */
.data 0x38800000 # 8000C648 => li r4, 0x0000
.data 0x38040009 # 8000C64C => addi r0, r4, 0x0009
.data 0x4810C8B0 # 8000C650 => b +0x0010C8B0 /* 80118F00 */
# region @ 8000C6D0 (32 bytes)
.data 0x8000C6D0 # address
.data 0x00000020 # size
.data 0x38000001 # 8000C6D0 => li r0, 0x0001
.data 0x901D0054 # 8000C6D4 => stw [r29 + 0x0054], r0
.data 0x807D0024 # 8000C6D8 => lwz r3, [r29 + 0x0024]
.data 0x48211324 # 8000C6DC => b +0x00211324 /* 8021DA00 */
.data 0x38000001 # 8000C6E0 => li r0, 0x0001
.data 0x901F0378 # 8000C6E4 => stw [r31 + 0x0378], r0
.data 0x807F0024 # 8000C6E8 => lwz r3, [r31 + 0x0024]
.data 0x482147D4 # 8000C6EC => b +0x002147D4 /* 80220EC0 */
# region @ 8000C8A0 (20 bytes)
.data 0x8000C8A0 # address
.data 0x00000014 # size
.data 0x1C00000A # 8000C8A0 => mulli r0, r0, 10
.data 0x57E407BD # 8000C8A4 => rlwinm. r4, r31, 0, 30, 30
.data 0x41820008 # 8000C8A8 => beq +0x00000008 /* 8000C8B0 */
.data 0x7FA00734 # 8000C8AC => extsh r0, r29
.data 0x48105FB8 # 8000C8B0 => b +0x00105FB8 /* 80112868 */
# region @ 8000C8C0 (16 bytes)
.data 0x8000C8C0 # address
.data 0x00000010 # size
.data 0x7000000F # 8000C8C0 => andi. r0, r0, 0x000F
.data 0x7000004F # 8000C8C4 => andi. r0, r0, 0x004F
.data 0x2C000004 # 8000C8C8 => cmpwi r0, 4
.data 0x4E800020 # 8000C8CC => blr
# region @ 8000D980 (20 bytes)
.data 0x8000D980 # address
.data 0x00000014 # size
.data 0x807C0000 # 8000D980 => lwz r3, [r28]
.data 0x2C030013 # 8000D984 => cmpwi r3, 19
.data 0x40820008 # 8000D988 => bne +0x00000008 /* 8000D990 */
.data 0x38600002 # 8000D98C => li r3, 0x0002
.data 0x482AEA54 # 8000D990 => b +0x002AEA54 /* 802BC3E4 */
# region @ 8000D9A0 (24 bytes)
.data 0x8000D9A0 # address
.data 0x00000018 # size
.data 0xC042FC80 # 8000D9A0 => lfs f2, [r2 - 0x0380]
.data 0x807E0030 # 8000D9A4 => lwz r3, [r30 + 0x0030]
.data 0x70630020 # 8000D9A8 => andi. r3, r3, 0x0020
.data 0x41820008 # 8000D9AC => beq +0x00000008 /* 8000D9B4 */
.data 0xC042FC98 # 8000D9B0 => lfs f2, [r2 - 0x0368]
.data 0x4832871C # 8000D9B4 => b +0x0032871C /* 803360D0 */
# region @ 8000E1E0 (28 bytes)
.data 0x8000E1E0 # address
.data 0x0000001C # size
.data 0x7FC802A6 # 8000E1E0 => mflr r30
.data 0x38A00000 # 8000E1E4 => li r5, 0x0000
.data 0x38C0001E # 8000E1E8 => li r6, 0x001E
.data 0x38E00040 # 8000E1EC => li r7, 0x0040
.data 0x4807859D # 8000E1F0 => bl +0x0007859C /* 8008678C */
.data 0x7FC803A6 # 8000E1F4 => mtlr r30
.data 0x4E800020 # 8000E1F8 => blr
# region @ 8001309C (4 bytes)
.data 0x8001309C # address
.data 0x00000004 # size
.data 0x4BFFFCC0 # 8001309C => b -0x00000340 /* 80012D5C */
# region @ 8001430C (4 bytes)
.data 0x8001430C # address
.data 0x00000004 # size
.data 0x4BFF85B5 # 8001430C => bl -0x00007A4C /* 8000C8C0 */
# region @ 80015D34 (4 bytes)
.data 0x80015D34 # address
.data 0x00000004 # size
.data 0x4BFF6B91 # 80015D34 => bl -0x00009470 /* 8000C8C4 */
# region @ 80091814 (8 bytes)
.data 0x80091814 # address
.data 0x00000008 # size
.data 0x4800024D # 80091814 => bl +0x0000024C /* 80091A60 */
.data 0xB3C3032C # 80091818 => sth [r3 + 0x032C], r30
# region @ 800BCA58 (4 bytes)
.data 0x800BCA58 # address
.data 0x00000004 # size
.data 0x48000010 # 800BCA58 => b +0x00000010 /* 800BCA68 */
# region @ 80104D24 (4 bytes)
.data 0x80104D24 # address
.data 0x00000004 # size
.data 0x4182000C # 80104D24 => beq +0x0000000C /* 80104D30 */
# region @ 80107654 (4 bytes)
.data 0x80107654 # address
.data 0x00000004 # size
.data 0x4800000C # 80107654 => b +0x0000000C /* 80107660 */
# region @ 80107668 (4 bytes)
.data 0x80107668 # address
.data 0x00000004 # size
.data 0x7C030378 # 80107668 => mr r3, r0
# region @ 8010BB70 (4 bytes)
.data 0x8010BB70 # address
.data 0x00000004 # size
.data 0x4BEFF52C # 8010BB70 => b -0x00100AD4 /* 8000B09C */
# region @ 8010DF98 (4 bytes)
.data 0x8010DF98 # address
.data 0x00000004 # size
.data 0x4BEFD11C # 8010DF98 => b -0x00102EE4 /* 8000B0B4 */
# region @ 80112864 (4 bytes)
.data 0x80112864 # address
.data 0x00000004 # size
.data 0x4BEFA03C # 80112864 => b -0x00105FC4 /* 8000C8A0 */
# region @ 8011458C (4 bytes)
.data 0x8011458C # address
.data 0x00000004 # size
.data 0x38000012 # 8011458C => li r0, 0x0012
# region @ 801187CC (4 bytes)
.data 0x801187CC # address
.data 0x00000004 # size
.data 0x88040016 # 801187CC => lbz r0, [r4 + 0x0016]
# region @ 801187D8 (4 bytes)
.data 0x801187D8 # address
.data 0x00000004 # size
.data 0x88040017 # 801187D8 => lbz r0, [r4 + 0x0017]
# region @ 80118EFC (4 bytes)
.data 0x80118EFC # address
.data 0x00000004 # size
.data 0x4BEF3744 # 80118EFC => b -0x0010C8BC /* 8000C640 */
# region @ 8011CCD4 (12 bytes)
.data 0x8011CCD4 # address
.data 0x0000000C # size
.data 0x7C030378 # 8011CCD4 => mr r3, r0
.data 0x3863FFFF # 8011CCD8 => subi r3, r3, 0x0001
.data 0x4BFFFFE8 # 8011CCDC => b -0x00000018 /* 8011CCC4 */
# region @ 8011CD90 (12 bytes)
.data 0x8011CD90 # address
.data 0x0000000C # size
.data 0x7C030378 # 8011CD90 => mr r3, r0
.data 0x3863FFFF # 8011CD94 => subi r3, r3, 0x0001
.data 0x4BFFFFE8 # 8011CD98 => b -0x00000018 /* 8011CD80 */
# region @ 8011CDE0 (12 bytes)
.data 0x8011CDE0 # address
.data 0x0000000C # size
.data 0x7C040378 # 8011CDE0 => mr r4, r0
.data 0x3884FFFF # 8011CDE4 => subi r4, r4, 0x0001
.data 0x4BFFFFE8 # 8011CDE8 => b -0x00000018 /* 8011CDD0 */
# region @ 801666D8 (8 bytes)
.data 0x801666D8 # address
.data 0x00000008 # size
.data 0x3C604005 # 801666D8 => lis r3, 0x4005
.data 0x4800009C # 801666DC => b +0x0000009C /* 80166778 */
# region @ 80166774 (4 bytes)
.data 0x80166774 # address
.data 0x00000004 # size
.data 0x4800001C # 80166774 => b +0x0000001C /* 80166790 */
# region @ 80171008 (4 bytes)
.data 0x80171008 # address
.data 0x00000004 # size
.data 0x4BE9ABC8 # 80171008 => b -0x00165438 /* 8000BBD0 */
# region @ 80171028 (4 bytes)
.data 0x80171028 # address
.data 0x00000004 # size
.data 0x60800420 # 80171028 => ori r0, r4, 0x0420
# region @ 8018425C (4 bytes)
.data 0x8018425C # address
.data 0x00000004 # size
.data 0x4BE8736C # 8018425C => b -0x00178C94 /* 8000B5C8 */
# region @ 8018429C (4 bytes)
.data 0x8018429C # address
.data 0x00000004 # size
.data 0x60000000 # 8018429C => nop
# region @ 80189E2C (4 bytes)
.data 0x80189E2C # address
.data 0x00000004 # size
.data 0x60000000 # 80189E2C => nop
# region @ 801937B0 (4 bytes)
.data 0x801937B0 # address
.data 0x00000004 # size
.data 0x60000000 # 801937B0 => nop
# region @ 801B9C20 (4 bytes)
.data 0x801B9C20 # address
.data 0x00000004 # size
.data 0x4BE527E8 # 801B9C20 => b -0x001AD818 /* 8000C408 */
# region @ 801B9EF4 (4 bytes)
.data 0x801B9EF4 # address
.data 0x00000004 # size
.data 0x4BE51194 # 801B9EF4 => b -0x001AEE6C /* 8000B088 */
# region @ 801C6360 (4 bytes)
.data 0x801C6360 # address
.data 0x00000004 # size
.data 0x389F02FC # 801C6360 => addi r4, r31, 0x02FC
# region @ 801CA6E0 (4 bytes)
.data 0x801CA6E0 # address
.data 0x00000004 # size
.data 0x48000010 # 801CA6E0 => b +0x00000010 /* 801CA6F0 */
# region @ 8021D9FC (4 bytes)
.data 0x8021D9FC # address
.data 0x00000004 # size
.data 0x4BDEECD4 # 8021D9FC => b -0x0021132C /* 8000C6D0 */
# region @ 80220EBC (4 bytes)
.data 0x80220EBC # address
.data 0x00000004 # size
.data 0x4BDEB824 # 80220EBC => b -0x002147DC /* 8000C6E0 */
# region @ 80229CF0 (4 bytes)
.data 0x80229CF0 # address
.data 0x00000004 # size
.data 0x2C000001 # 80229CF0 => cmpwi r0, 1
# region @ 8022A4F0 (4 bytes)
.data 0x8022A4F0 # address
.data 0x00000004 # size
.data 0x3880FF00 # 8022A4F0 => li r4, 0xFFFFFF00
# region @ 8022A520 (4 bytes)
.data 0x8022A520 # address
.data 0x00000004 # size
.data 0x3880FE80 # 8022A520 => li r4, 0xFFFFFE80
# region @ 8022A550 (4 bytes)
.data 0x8022A550 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 8022A550 => li r4, 0xFFFFFDB0
# region @ 8022D1EC (4 bytes)
.data 0x8022D1EC # address
.data 0x00000004 # size
.data 0x60000000 # 8022D1EC => nop
# region @ 8022D920 (4 bytes)
.data 0x8022D920 # address
.data 0x00000004 # size
.data 0x41810630 # 8022D920 => bgt +0x00000630 /* 8022DF50 */
# region @ 8022EC44 (4 bytes)
.data 0x8022EC44 # address
.data 0x00000004 # size
.data 0x3880FF00 # 8022EC44 => li r4, 0xFFFFFF00
# region @ 8022EC74 (4 bytes)
.data 0x8022EC74 # address
.data 0x00000004 # size
.data 0x3880FE80 # 8022EC74 => li r4, 0xFFFFFE80
# region @ 8022ECA4 (4 bytes)
.data 0x8022ECA4 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 8022ECA4 => li r4, 0xFFFFFDB0
# region @ 8022F450 (4 bytes)
.data 0x8022F450 # address
.data 0x00000004 # size
.data 0x3880FF00 # 8022F450 => li r4, 0xFFFFFF00
# region @ 8022F480 (4 bytes)
.data 0x8022F480 # address
.data 0x00000004 # size
.data 0x3880FE80 # 8022F480 => li r4, 0xFFFFFE80
# region @ 8022F4B0 (4 bytes)
.data 0x8022F4B0 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 8022F4B0 => li r4, 0xFFFFFDB0
# region @ 80230A54 (4 bytes)
.data 0x80230A54 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80230A54 => li r4, 0xFFFFFF00
# region @ 80230A84 (4 bytes)
.data 0x80230A84 # address
.data 0x00000004 # size
.data 0x3880FE80 # 80230A84 => li r4, 0xFFFFFE80
# region @ 80230AB4 (4 bytes)
.data 0x80230AB4 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80230AB4 => li r4, 0xFFFFFDB0
# region @ 802317C4 (4 bytes)
.data 0x802317C4 # address
.data 0x00000004 # size
.data 0x3880FF00 # 802317C4 => li r4, 0xFFFFFF00
# region @ 802317F4 (4 bytes)
.data 0x802317F4 # address
.data 0x00000004 # size
.data 0x3880FE80 # 802317F4 => li r4, 0xFFFFFE80
# region @ 80231824 (4 bytes)
.data 0x80231824 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80231824 => li r4, 0xFFFFFDB0
# region @ 802320B8 (4 bytes)
.data 0x802320B8 # address
.data 0x00000004 # size
.data 0x3880FF00 # 802320B8 => li r4, 0xFFFFFF00
# region @ 802320F0 (4 bytes)
.data 0x802320F0 # address
.data 0x00000004 # size
.data 0x3880FE80 # 802320F0 => li r4, 0xFFFFFE80
# region @ 80232128 (4 bytes)
.data 0x80232128 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80232128 => li r4, 0xFFFFFDB0
# region @ 80234164 (4 bytes)
.data 0x80234164 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80234164 => li r4, 0xFFFFFF00
# region @ 80234194 (4 bytes)
.data 0x80234194 # address
.data 0x00000004 # size
.data 0x3880FE80 # 80234194 => li r4, 0xFFFFFE80
# region @ 802341C4 (4 bytes)
.data 0x802341C4 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 802341C4 => li r4, 0xFFFFFDB0
# region @ 80236790 (4 bytes)
.data 0x80236790 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80236790 => li r4, 0xFFFFFF00
# region @ 802367CC (4 bytes)
.data 0x802367CC # address
.data 0x00000004 # size
.data 0x3880FE80 # 802367CC => li r4, 0xFFFFFE80
# region @ 80236808 (4 bytes)
.data 0x80236808 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80236808 => li r4, 0xFFFFFDB0
# region @ 80236F68 (4 bytes)
.data 0x80236F68 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80236F68 => li r4, 0xFFFFFF00
# region @ 80236F98 (4 bytes)
.data 0x80236F98 # address
.data 0x00000004 # size
.data 0x3880FE80 # 80236F98 => li r4, 0xFFFFFE80
# region @ 80236FC8 (4 bytes)
.data 0x80236FC8 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80236FC8 => li r4, 0xFFFFFDB0
# region @ 8023797C (4 bytes)
.data 0x8023797C # address
.data 0x00000004 # size
.data 0x3880FF00 # 8023797C => li r4, 0xFFFFFF00
# region @ 802379AC (4 bytes)
.data 0x802379AC # address
.data 0x00000004 # size
.data 0x3880FE80 # 802379AC => li r4, 0xFFFFFE80
# region @ 802379DC (4 bytes)
.data 0x802379DC # address
.data 0x00000004 # size
.data 0x3880FDB0 # 802379DC => li r4, 0xFFFFFDB0
# region @ 80238354 (4 bytes)
.data 0x80238354 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80238354 => li r4, 0xFFFFFF00
# region @ 80238384 (4 bytes)
.data 0x80238384 # address
.data 0x00000004 # size
.data 0x3880FE80 # 80238384 => li r4, 0xFFFFFE80
# region @ 802383B4 (4 bytes)
.data 0x802383B4 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 802383B4 => li r4, 0xFFFFFDB0
# region @ 8023BC84 (4 bytes)
.data 0x8023BC84 # address
.data 0x00000004 # size
.data 0x3880FF00 # 8023BC84 => li r4, 0xFFFFFF00
# region @ 8023BCB4 (4 bytes)
.data 0x8023BCB4 # address
.data 0x00000004 # size
.data 0x3880FE80 # 8023BCB4 => li r4, 0xFFFFFE80
# region @ 8023BCE4 (4 bytes)
.data 0x8023BCE4 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 8023BCE4 => li r4, 0xFFFFFDB0
# region @ 80250CB0 (4 bytes)
.data 0x80250CB0 # address
.data 0x00000004 # size
.data 0x60000000 # 80250CB0 => nop
# region @ 80268A88 (4 bytes)
.data 0x80268A88 # address
.data 0x00000004 # size
.data 0x60000000 # 80268A88 => nop
# region @ 8026E738 (4 bytes)
.data 0x8026E738 # address
.data 0x00000004 # size
.data 0x3884AAFA # 8026E738 => subi r4, r4, 0x5506
# region @ 8026E84C (4 bytes)
.data 0x8026E84C # address
.data 0x00000004 # size
.data 0x3863AAFA # 8026E84C => subi r3, r3, 0x5506
# region @ 8026E8D4 (4 bytes)
.data 0x8026E8D4 # address
.data 0x00000004 # size
.data 0x3883AAFA # 8026E8D4 => subi r4, r3, 0x5506
# region @ 802BC3E0 (4 bytes)
.data 0x802BC3E0 # address
.data 0x00000004 # size
.data 0x4BD515A0 # 802BC3E0 => b -0x002AEA60 /* 8000D980 */
# region @ 802FC968 (4 bytes)
.data 0x802FC968 # address
.data 0x00000004 # size
.data 0x2C030001 # 802FC968 => cmpwi r3, 1
# region @ 803025CC (28 bytes)
.data 0x803025CC # address
.data 0x0000001C # size
.data 0x48000020 # 803025CC => b +0x00000020 /* 803025EC */
.data 0x3863A830 # 803025D0 => subi r3, r3, 0x57D0
.data 0x800DB994 # 803025D4 => lwz r0, [r13 - 0x466C]
.data 0x2C000023 # 803025D8 => cmpwi r0, 35
.data 0x40820008 # 803025DC => bne +0x00000008 /* 803025E4 */
.data 0x3863FB28 # 803025E0 => subi r3, r3, 0x04D8
.data 0x4800008C # 803025E4 => b +0x0000008C /* 80302670 */
# region @ 8030266C (4 bytes)
.data 0x8030266C # address
.data 0x00000004 # size
.data 0x4BFFFF64 # 8030266C => b -0x0000009C /* 803025D0 */
# region @ 803360CC (4 bytes)
.data 0x803360CC # address
.data 0x00000004 # size
.data 0x4BCD78D4 # 803360CC => b -0x0032872C /* 8000D9A0 */
# region @ 80356D64 (4 bytes)
.data 0x80356D64 # address
.data 0x00000004 # size
.data 0x388001E8 # 80356D64 => li r4, 0x01E8
# region @ 80356D88 (4 bytes)
.data 0x80356D88 # address
.data 0x00000004 # size
.data 0x4BCB7459 # 80356D88 => bl -0x00348BA8 /* 8000E1E0 */
# region @ 80356DF8 (4 bytes)
.data 0x80356DF8 # address
.data 0x00000004 # size
.data 0x388001E8 # 80356DF8 => li r4, 0x01E8
# region @ 80356E08 (4 bytes)
.data 0x80356E08 # address
.data 0x00000004 # size
.data 0x4BCB73D9 # 80356E08 => bl -0x00348C28 /* 8000E1E0 */
# region @ 804B6E58 (8 bytes)
.data 0x804B6E58 # address
.data 0x00000008 # size
.data 0x70808080 # 804B6E58 => andi. r0, r4, 0x8080
.data 0x60707070 # 804B6E5C => ori r16, r3, 0x7070
# region @ 804CA61C (4 bytes)
.data 0x804CA61C # address
.data 0x00000004 # size
.data 0x0000001E # 804CA61C => .invalid
# region @ 804CA674 (4 bytes)
.data 0x804CA674 # address
.data 0x00000004 # size
.data 0x00000028 # 804CA674 => .invalid
# region @ 804CA6A0 (4 bytes)
.data 0x804CA6A0 # address
.data 0x00000004 # size
.data 0x00000032 # 804CA6A0 => .invalid
# region @ 804CA6CC (4 bytes)
.data 0x804CA6CC # address
.data 0x00000004 # size
.data 0x0000003C # 804CA6CC => .invalid
# region @ 804CA6DC (4 bytes)
.data 0x804CA6DC # address
.data 0x00000004 # size
.data 0x0018003C # 804CA6DC => .invalid
# region @ 804CA934 (4 bytes)
.data 0x804CA934 # address
.data 0x00000004 # size
.data 0x00000028 # 804CA934 => .invalid
# region @ 804CF290 (4 bytes)
.data 0x804CF290 # address
.data 0x00000004 # size
.data 0xFF0074EE # 804CF290 => fsel f24, f0, f14, f19
# region @ 805D3F6C (4 bytes)
.data 0x805D3F6C # address
.data 0x00000004 # size
.data 0x435C0000 # 805D3F6C => bc 26, 28, +0x00000000 /* 805D3F6C */
# region @ 805D5C08 (4 bytes)
.data 0x805D5C08 # address
.data 0x00000004 # size
.data 0x46AFC800 # 805D5C08 => .invalid sc
# region @ 805D5EA8 (4 bytes)
.data 0x805D5EA8 # address
.data 0x00000004 # size
.data 0x43480000 # 805D5EA8 => bc 26, 8, +0x00000000 /* 805D5EA8 */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,550 @@
.meta name="Bug fixes"
.meta description="Fix many minor\ngameplay, sound,\nand graphical bugs"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000B088 (88 bytes)
.data 0x8000B088 # address
.data 0x00000058 # size
.data 0x7FA3EB78 # 8000B088 => mr r3, r29
.data 0x38800000 # 8000B08C => li r4, 0x0000
.data 0x481B1C09 # 8000B090 => bl +0x001B1C08 /* 801BCC98 */
.data 0x7FA3EB78 # 8000B094 => mr r3, r29
.data 0x481B1ED8 # 8000B098 => b +0x001B1ED8 /* 801BCF70 */
.data 0x881F0000 # 8000B09C => lbz r0, [r31]
.data 0x28090001 # 8000B0A0 => cmplwi r9, 1
.data 0x4082000C # 8000B0A4 => bne +0x0000000C /* 8000B0B0 */
.data 0x881F0001 # 8000B0A8 => lbz r0, [r31 + 0x0001]
.data 0x3BFF0002 # 8000B0AC => addi r31, r31, 0x0002
.data 0x48100B58 # 8000B0B0 => b +0x00100B58 /* 8010BC08 */
.data 0x39200000 # 8000B0B4 => li r9, 0x0000
.data 0x48100AE9 # 8000B0B8 => bl +0x00100AE8 /* 8010BBA0 */
.data 0x7F43D378 # 8000B0BC => mr r3, r26
.data 0x7F64DB78 # 8000B0C0 => mr r4, r27
.data 0x7F85E378 # 8000B0C4 => mr r5, r28
.data 0x7FA6EB78 # 8000B0C8 => mr r6, r29
.data 0x7FC7F378 # 8000B0CC => mr r7, r30
.data 0x7FE8FB78 # 8000B0D0 => mr r8, r31
.data 0x39200001 # 8000B0D4 => li r9, 0x0001
.data 0x48100AC9 # 8000B0D8 => bl +0x00100AC8 /* 8010BBA0 */
.data 0x4810300C # 8000B0DC => b +0x0010300C /* 8010E0E8 */
# region @ 8000B5C8 (20 bytes)
.data 0x8000B5C8 # address
.data 0x00000014 # size
.data 0x80630098 # 8000B5C8 => lwz r3, [r3 + 0x0098]
.data 0x483D8F71 # 8000B5CC => bl +0x003D8F70 /* 803E453C */
.data 0x807F042C # 8000B5D0 => lwz r3, [r31 + 0x042C]
.data 0x809F0430 # 8000B5D4 => lwz r4, [r31 + 0x0430]
.data 0x48178DEC # 8000B5D8 => b +0x00178DEC /* 801843C4 */
# region @ 8000BBD0 (32 bytes)
.data 0x8000BBD0 # address
.data 0x00000020 # size
.data 0x809F0370 # 8000BBD0 => lwz r4, [r31 + 0x0370]
.data 0x3884FC00 # 8000BBD4 => subi r4, r4, 0x0400
.data 0x909F0370 # 8000BBD8 => stw [r31 + 0x0370], r4
.data 0x807F0014 # 8000BBDC => lwz r3, [r31 + 0x0014]
.data 0x28030000 # 8000BBE0 => cmplwi r3, 0
.data 0x41820008 # 8000BBE4 => beq +0x00000008 /* 8000BBEC */
.data 0x90830060 # 8000BBE8 => stw [r3 + 0x0060], r4
.data 0x48165678 # 8000BBEC => b +0x00165678 /* 80171264 */
# region @ 8000C3F8 (124 bytes)
.data 0x8000C3F8 # address
.data 0x0000007C # size
.data 0x28040000 # 8000C3F8 => cmplwi r4, 0
.data 0x4D820020 # 8000C3FC => beqlr
.data 0x9421FFF0 # 8000C400 => stwu [r1 - 0x0010], r1
.data 0x481B0898 # 8000C404 => b +0x001B0898 /* 801BCC9C */
.data 0x9421FFE0 # 8000C408 => stwu [r1 - 0x0020], r1
.data 0x7C0802A6 # 8000C40C => mflr r0
.data 0x90010024 # 8000C410 => stw [r1 + 0x0024], r0
.data 0xBF410008 # 8000C414 => stmw [r1 + 0x0008], r26
.data 0x7C7F1B78 # 8000C418 => mr r31, r3
.data 0x4BFFFFDD # 8000C41C => bl -0x00000024 /* 8000C3F8 */
.data 0x3BC00000 # 8000C420 => li r30, 0x0000
.data 0x3BBF0D04 # 8000C424 => addi r29, r31, 0x0D04
.data 0x837F032C # 8000C428 => lwz r27, [r31 + 0x032C]
.data 0x839D0000 # 8000C42C => lwz r28, [r29]
.data 0x7F83E379 # 8000C430 => mr. r3, r28
.data 0x41820018 # 8000C434 => beq +0x00000018 /* 8000C44C */
.data 0x38800001 # 8000C438 => li r4, 0x0001
.data 0x480FEDC9 # 8000C43C => bl +0x000FEDC8 /* 8010B204 */
.data 0x7F83E378 # 8000C440 => mr r3, r28
.data 0x38800001 # 8000C444 => li r4, 0x0001
.data 0x480FEF49 # 8000C448 => bl +0x000FEF48 /* 8010B390 */
.data 0x3BBD0004 # 8000C44C => addi r29, r29, 0x0004
.data 0x3BDE0001 # 8000C450 => addi r30, r30, 0x0001
.data 0x2C1E000D # 8000C454 => cmpwi r30, 13
.data 0x4180FFD4 # 8000C458 => blt -0x0000002C /* 8000C42C */
.data 0x937F032C # 8000C45C => stw [r31 + 0x032C], r27
.data 0xBB410008 # 8000C460 => lmw r26, [r1 + 0x0008]
.data 0x80010024 # 8000C464 => lwz r0, [r1 + 0x0024]
.data 0x7C0803A6 # 8000C468 => mtlr r0
.data 0x38210020 # 8000C46C => addi r1, r1, 0x0020
.data 0x4E800020 # 8000C470 => blr
# region @ 8000C640 (20 bytes)
.data 0x8000C640 # address
.data 0x00000014 # size
.data 0x54800673 # 8000C640 => rlwinm. r0, r4, 0, 25, 25
.data 0x41820008 # 8000C644 => beq +0x00000008 /* 8000C64C */
.data 0x38800000 # 8000C648 => li r4, 0x0000
.data 0x38040009 # 8000C64C => addi r0, r4, 0x0009
.data 0x4810C98C # 8000C650 => b +0x0010C98C /* 80118FDC */
# region @ 8000C6D0 (32 bytes)
.data 0x8000C6D0 # address
.data 0x00000020 # size
.data 0x38000001 # 8000C6D0 => li r0, 0x0001
.data 0x901D0054 # 8000C6D4 => stw [r29 + 0x0054], r0
.data 0x807D0024 # 8000C6D8 => lwz r3, [r29 + 0x0024]
.data 0x48212210 # 8000C6DC => b +0x00212210 /* 8021E8EC */
.data 0x38000001 # 8000C6E0 => li r0, 0x0001
.data 0x901F0378 # 8000C6E4 => stw [r31 + 0x0378], r0
.data 0x807F0024 # 8000C6E8 => lwz r3, [r31 + 0x0024]
.data 0x482156C0 # 8000C6EC => b +0x002156C0 /* 80221DAC */
# region @ 8000C8A0 (20 bytes)
.data 0x8000C8A0 # address
.data 0x00000014 # size
.data 0x1C00000A # 8000C8A0 => mulli r0, r0, 10
.data 0x57E407BD # 8000C8A4 => rlwinm. r4, r31, 0, 30, 30
.data 0x41820008 # 8000C8A8 => beq +0x00000008 /* 8000C8B0 */
.data 0x7FA00734 # 8000C8AC => extsh r0, r29
.data 0x48106190 # 8000C8B0 => b +0x00106190 /* 80112A40 */
# region @ 8000C8C0 (16 bytes)
.data 0x8000C8C0 # address
.data 0x00000010 # size
.data 0x7000000F # 8000C8C0 => andi. r0, r0, 0x000F
.data 0x7000004F # 8000C8C4 => andi. r0, r0, 0x004F
.data 0x2C000004 # 8000C8C8 => cmpwi r0, 4
.data 0x4E800020 # 8000C8CC => blr
# region @ 8000D980 (20 bytes)
.data 0x8000D980 # address
.data 0x00000014 # size
.data 0x807C0000 # 8000D980 => lwz r3, [r28]
.data 0x2C030013 # 8000D984 => cmpwi r3, 19
.data 0x40820008 # 8000D988 => bne +0x00000008 /* 8000D990 */
.data 0x38600002 # 8000D98C => li r3, 0x0002
.data 0x482AFB9C # 8000D990 => b +0x002AFB9C /* 802BD52C */
# region @ 8000D9A0 (24 bytes)
.data 0x8000D9A0 # address
.data 0x00000018 # size
.data 0xC042FC80 # 8000D9A0 => lfs f2, [r2 - 0x0380]
.data 0x807E0030 # 8000D9A4 => lwz r3, [r30 + 0x0030]
.data 0x70630020 # 8000D9A8 => andi. r3, r3, 0x0020
.data 0x41820008 # 8000D9AC => beq +0x00000008 /* 8000D9B4 */
.data 0xC042FC98 # 8000D9B0 => lfs f2, [r2 - 0x0368]
.data 0x48329C38 # 8000D9B4 => b +0x00329C38 /* 803375EC */
# region @ 8000E1E0 (28 bytes)
.data 0x8000E1E0 # address
.data 0x0000001C # size
.data 0x7FC802A6 # 8000E1E0 => mflr r30
.data 0x38A00000 # 8000E1E4 => li r5, 0x0000
.data 0x38C0001E # 8000E1E8 => li r6, 0x001E
.data 0x38E00040 # 8000E1EC => li r7, 0x0040
.data 0x48078715 # 8000E1F0 => bl +0x00078714 /* 80086904 */
.data 0x7FC803A6 # 8000E1F4 => mtlr r30
.data 0x4E800020 # 8000E1F8 => blr
# region @ 80013364 (4 bytes)
.data 0x80013364 # address
.data 0x00000004 # size
.data 0x4BFFFCC0 # 80013364 => b -0x00000340 /* 80013024 */
# region @ 800146A4 (4 bytes)
.data 0x800146A4 # address
.data 0x00000004 # size
.data 0x4BFF821D # 800146A4 => bl -0x00007DE4 /* 8000C8C0 */
# region @ 80016174 (4 bytes)
.data 0x80016174 # address
.data 0x00000004 # size
.data 0x4BFF6751 # 80016174 => bl -0x000098B0 /* 8000C8C4 */
# region @ 8009198C (8 bytes)
.data 0x8009198C # address
.data 0x00000008 # size
.data 0x4800024D # 8009198C => bl +0x0000024C /* 80091BD8 */
.data 0xB3C3032C # 80091990 => sth [r3 + 0x032C], r30
# region @ 800BCBD0 (4 bytes)
.data 0x800BCBD0 # address
.data 0x00000004 # size
.data 0x48000010 # 800BCBD0 => b +0x00000010 /* 800BCBE0 */
# region @ 80104DE0 (4 bytes)
.data 0x80104DE0 # address
.data 0x00000004 # size
.data 0x4182000C # 80104DE0 => beq +0x0000000C /* 80104DEC */
# region @ 80107708 (4 bytes)
.data 0x80107708 # address
.data 0x00000004 # size
.data 0x4800000C # 80107708 => b +0x0000000C /* 80107714 */
# region @ 8010771C (4 bytes)
.data 0x8010771C # address
.data 0x00000004 # size
.data 0x7C030378 # 8010771C => mr r3, r0
# region @ 8010BC04 (4 bytes)
.data 0x8010BC04 # address
.data 0x00000004 # size
.data 0x4BEFF498 # 8010BC04 => b -0x00100B68 /* 8000B09C */
# region @ 8010E0E4 (4 bytes)
.data 0x8010E0E4 # address
.data 0x00000004 # size
.data 0x4BEFCFD0 # 8010E0E4 => b -0x00103030 /* 8000B0B4 */
# region @ 80112A3C (4 bytes)
.data 0x80112A3C # address
.data 0x00000004 # size
.data 0x4BEF9E64 # 80112A3C => b -0x0010619C /* 8000C8A0 */
# region @ 80114634 (4 bytes)
.data 0x80114634 # address
.data 0x00000004 # size
.data 0x38000012 # 80114634 => li r0, 0x0012
# region @ 8011885C (4 bytes)
.data 0x8011885C # address
.data 0x00000004 # size
.data 0x88040016 # 8011885C => lbz r0, [r4 + 0x0016]
# region @ 80118868 (4 bytes)
.data 0x80118868 # address
.data 0x00000004 # size
.data 0x88040017 # 80118868 => lbz r0, [r4 + 0x0017]
# region @ 80118FD8 (4 bytes)
.data 0x80118FD8 # address
.data 0x00000004 # size
.data 0x4BEF3668 # 80118FD8 => b -0x0010C998 /* 8000C640 */
# region @ 8011CD0C (12 bytes)
.data 0x8011CD0C # address
.data 0x0000000C # size
.data 0x7C030378 # 8011CD0C => mr r3, r0
.data 0x3863FFFF # 8011CD10 => subi r3, r3, 0x0001
.data 0x4BFFFFE8 # 8011CD14 => b -0x00000018 /* 8011CCFC */
# region @ 8011CDC8 (12 bytes)
.data 0x8011CDC8 # address
.data 0x0000000C # size
.data 0x7C030378 # 8011CDC8 => mr r3, r0
.data 0x3863FFFF # 8011CDCC => subi r3, r3, 0x0001
.data 0x4BFFFFE8 # 8011CDD0 => b -0x00000018 /* 8011CDB8 */
# region @ 8011CE18 (12 bytes)
.data 0x8011CE18 # address
.data 0x0000000C # size
.data 0x7C040378 # 8011CE18 => mr r4, r0
.data 0x3884FFFF # 8011CE1C => subi r4, r4, 0x0001
.data 0x4BFFFFE8 # 8011CE20 => b -0x00000018 /* 8011CE08 */
# region @ 80166848 (8 bytes)
.data 0x80166848 # address
.data 0x00000008 # size
.data 0x3C604005 # 80166848 => lis r3, 0x4005
.data 0x4800009C # 8016684C => b +0x0000009C /* 801668E8 */
# region @ 801668E4 (4 bytes)
.data 0x801668E4 # address
.data 0x00000004 # size
.data 0x4800001C # 801668E4 => b +0x0000001C /* 80166900 */
# region @ 80171260 (4 bytes)
.data 0x80171260 # address
.data 0x00000004 # size
.data 0x4BE9A970 # 80171260 => b -0x00165690 /* 8000BBD0 */
# region @ 80171280 (4 bytes)
.data 0x80171280 # address
.data 0x00000004 # size
.data 0x60800420 # 80171280 => ori r0, r4, 0x0420
# region @ 801843C0 (4 bytes)
.data 0x801843C0 # address
.data 0x00000004 # size
.data 0x4BE87208 # 801843C0 => b -0x00178DF8 /* 8000B5C8 */
# region @ 80184400 (4 bytes)
.data 0x80184400 # address
.data 0x00000004 # size
.data 0x60000000 # 80184400 => nop
# region @ 80189F90 (4 bytes)
.data 0x80189F90 # address
.data 0x00000004 # size
.data 0x60000000 # 80189F90 => nop
# region @ 80193914 (4 bytes)
.data 0x80193914 # address
.data 0x00000004 # size
.data 0x60000000 # 80193914 => nop
# region @ 801BCC98 (4 bytes)
.data 0x801BCC98 # address
.data 0x00000004 # size
.data 0x4BE4F770 # 801BCC98 => b -0x001B0890 /* 8000C408 */
# region @ 801BCF6C (4 bytes)
.data 0x801BCF6C # address
.data 0x00000004 # size
.data 0x4BE4E11C # 801BCF6C => b -0x001B1EE4 /* 8000B088 */
# region @ 801C6604 (4 bytes)
.data 0x801C6604 # address
.data 0x00000004 # size
.data 0x389F02FC # 801C6604 => addi r4, r31, 0x02FC
# region @ 801CB5EC (4 bytes)
.data 0x801CB5EC # address
.data 0x00000004 # size
.data 0x48000010 # 801CB5EC => b +0x00000010 /* 801CB5FC */
# region @ 8021E8E8 (4 bytes)
.data 0x8021E8E8 # address
.data 0x00000004 # size
.data 0x4BDEDDE8 # 8021E8E8 => b -0x00212218 /* 8000C6D0 */
# region @ 80221DA8 (4 bytes)
.data 0x80221DA8 # address
.data 0x00000004 # size
.data 0x4BDEA938 # 80221DA8 => b -0x002156C8 /* 8000C6E0 */
# region @ 8022ABDC (4 bytes)
.data 0x8022ABDC # address
.data 0x00000004 # size
.data 0x2C000001 # 8022ABDC => cmpwi r0, 1
# region @ 8022B3E0 (4 bytes)
.data 0x8022B3E0 # address
.data 0x00000004 # size
.data 0x3880FF00 # 8022B3E0 => li r4, 0xFFFFFF00
# region @ 8022B410 (4 bytes)
.data 0x8022B410 # address
.data 0x00000004 # size
.data 0x3880FE80 # 8022B410 => li r4, 0xFFFFFE80
# region @ 8022B440 (4 bytes)
.data 0x8022B440 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 8022B440 => li r4, 0xFFFFFDB0
# region @ 8022E128 (4 bytes)
.data 0x8022E128 # address
.data 0x00000004 # size
.data 0x60000000 # 8022E128 => nop
# region @ 8022E85C (4 bytes)
.data 0x8022E85C # address
.data 0x00000004 # size
.data 0x41810630 # 8022E85C => bgt +0x00000630 /* 8022EE8C */
# region @ 8022FB30 (4 bytes)
.data 0x8022FB30 # address
.data 0x00000004 # size
.data 0x3880FF00 # 8022FB30 => li r4, 0xFFFFFF00
# region @ 8022FB60 (4 bytes)
.data 0x8022FB60 # address
.data 0x00000004 # size
.data 0x3880FE80 # 8022FB60 => li r4, 0xFFFFFE80
# region @ 8022FB90 (4 bytes)
.data 0x8022FB90 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 8022FB90 => li r4, 0xFFFFFDB0
# region @ 80230340 (4 bytes)
.data 0x80230340 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80230340 => li r4, 0xFFFFFF00
# region @ 80230370 (4 bytes)
.data 0x80230370 # address
.data 0x00000004 # size
.data 0x3880FE80 # 80230370 => li r4, 0xFFFFFE80
# region @ 802303A0 (4 bytes)
.data 0x802303A0 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 802303A0 => li r4, 0xFFFFFDB0
# region @ 80231940 (4 bytes)
.data 0x80231940 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80231940 => li r4, 0xFFFFFF00
# region @ 80231970 (4 bytes)
.data 0x80231970 # address
.data 0x00000004 # size
.data 0x3880FE80 # 80231970 => li r4, 0xFFFFFE80
# region @ 802319A0 (4 bytes)
.data 0x802319A0 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 802319A0 => li r4, 0xFFFFFDB0
# region @ 802326B0 (4 bytes)
.data 0x802326B0 # address
.data 0x00000004 # size
.data 0x3880FF00 # 802326B0 => li r4, 0xFFFFFF00
# region @ 802326E0 (4 bytes)
.data 0x802326E0 # address
.data 0x00000004 # size
.data 0x3880FE80 # 802326E0 => li r4, 0xFFFFFE80
# region @ 80232710 (4 bytes)
.data 0x80232710 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80232710 => li r4, 0xFFFFFDB0
# region @ 80232FA4 (4 bytes)
.data 0x80232FA4 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80232FA4 => li r4, 0xFFFFFF00
# region @ 80232FDC (4 bytes)
.data 0x80232FDC # address
.data 0x00000004 # size
.data 0x3880FE80 # 80232FDC => li r4, 0xFFFFFE80
# region @ 80233014 (4 bytes)
.data 0x80233014 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80233014 => li r4, 0xFFFFFDB0
# region @ 80235050 (4 bytes)
.data 0x80235050 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80235050 => li r4, 0xFFFFFF00
# region @ 80235080 (4 bytes)
.data 0x80235080 # address
.data 0x00000004 # size
.data 0x3880FE80 # 80235080 => li r4, 0xFFFFFE80
# region @ 802350B0 (4 bytes)
.data 0x802350B0 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 802350B0 => li r4, 0xFFFFFDB0
# region @ 8023767C (4 bytes)
.data 0x8023767C # address
.data 0x00000004 # size
.data 0x3880FF00 # 8023767C => li r4, 0xFFFFFF00
# region @ 802376B8 (4 bytes)
.data 0x802376B8 # address
.data 0x00000004 # size
.data 0x3880FE80 # 802376B8 => li r4, 0xFFFFFE80
# region @ 802376F4 (4 bytes)
.data 0x802376F4 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 802376F4 => li r4, 0xFFFFFDB0
# region @ 80237E54 (4 bytes)
.data 0x80237E54 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80237E54 => li r4, 0xFFFFFF00
# region @ 80237E84 (4 bytes)
.data 0x80237E84 # address
.data 0x00000004 # size
.data 0x3880FE80 # 80237E84 => li r4, 0xFFFFFE80
# region @ 80237EB4 (4 bytes)
.data 0x80237EB4 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80237EB4 => li r4, 0xFFFFFDB0
# region @ 80238868 (4 bytes)
.data 0x80238868 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80238868 => li r4, 0xFFFFFF00
# region @ 80238898 (4 bytes)
.data 0x80238898 # address
.data 0x00000004 # size
.data 0x3880FE80 # 80238898 => li r4, 0xFFFFFE80
# region @ 802388C8 (4 bytes)
.data 0x802388C8 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 802388C8 => li r4, 0xFFFFFDB0
# region @ 80239240 (4 bytes)
.data 0x80239240 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80239240 => li r4, 0xFFFFFF00
# region @ 80239270 (4 bytes)
.data 0x80239270 # address
.data 0x00000004 # size
.data 0x3880FE80 # 80239270 => li r4, 0xFFFFFE80
# region @ 802392A0 (4 bytes)
.data 0x802392A0 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 802392A0 => li r4, 0xFFFFFDB0
# region @ 8023CB70 (4 bytes)
.data 0x8023CB70 # address
.data 0x00000004 # size
.data 0x3880FF00 # 8023CB70 => li r4, 0xFFFFFF00
# region @ 8023CBA0 (4 bytes)
.data 0x8023CBA0 # address
.data 0x00000004 # size
.data 0x3880FE80 # 8023CBA0 => li r4, 0xFFFFFE80
# region @ 8023CBD0 (4 bytes)
.data 0x8023CBD0 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 8023CBD0 => li r4, 0xFFFFFDB0
# region @ 80251CA4 (4 bytes)
.data 0x80251CA4 # address
.data 0x00000004 # size
.data 0x60000000 # 80251CA4 => nop
# region @ 80269AE4 (4 bytes)
.data 0x80269AE4 # address
.data 0x00000004 # size
.data 0x60000000 # 80269AE4 => nop
# region @ 8026F794 (4 bytes)
.data 0x8026F794 # address
.data 0x00000004 # size
.data 0x3884AAFA # 8026F794 => subi r4, r4, 0x5506
# region @ 8026F8A8 (4 bytes)
.data 0x8026F8A8 # address
.data 0x00000004 # size
.data 0x3863AAFA # 8026F8A8 => subi r3, r3, 0x5506
# region @ 8026F930 (4 bytes)
.data 0x8026F930 # address
.data 0x00000004 # size
.data 0x3883AAFA # 8026F930 => subi r4, r3, 0x5506
# region @ 802BD528 (4 bytes)
.data 0x802BD528 # address
.data 0x00000004 # size
.data 0x4BD50458 # 802BD528 => b -0x002AFBA8 /* 8000D980 */
# region @ 802FDE60 (4 bytes)
.data 0x802FDE60 # address
.data 0x00000004 # size
.data 0x2C030001 # 802FDE60 => cmpwi r3, 1
# region @ 80303A1C (28 bytes)
.data 0x80303A1C # address
.data 0x0000001C # size
.data 0x48000020 # 80303A1C => b +0x00000020 /* 80303A3C */
.data 0x3863A830 # 80303A20 => subi r3, r3, 0x57D0
.data 0x800DB9B4 # 80303A24 => lwz r0, [r13 - 0x464C]
.data 0x2C000023 # 80303A28 => cmpwi r0, 35
.data 0x40820008 # 80303A2C => bne +0x00000008 /* 80303A34 */
.data 0x3863FB28 # 80303A30 => subi r3, r3, 0x04D8
.data 0x4800008C # 80303A34 => b +0x0000008C /* 80303AC0 */
# region @ 80303ABC (4 bytes)
.data 0x80303ABC # address
.data 0x00000004 # size
.data 0x4BFFFF64 # 80303ABC => b -0x0000009C /* 80303A20 */
# region @ 803375E8 (4 bytes)
.data 0x803375E8 # address
.data 0x00000004 # size
.data 0x4BCD63B8 # 803375E8 => b -0x00329C48 /* 8000D9A0 */
# region @ 803582C0 (4 bytes)
.data 0x803582C0 # address
.data 0x00000004 # size
.data 0x388001E8 # 803582C0 => li r4, 0x01E8
# region @ 803582E4 (4 bytes)
.data 0x803582E4 # address
.data 0x00000004 # size
.data 0x4BCB5EFD # 803582E4 => bl -0x0034A104 /* 8000E1E0 */
# region @ 80358354 (4 bytes)
.data 0x80358354 # address
.data 0x00000004 # size
.data 0x388001E8 # 80358354 => li r4, 0x01E8
# region @ 80358364 (4 bytes)
.data 0x80358364 # address
.data 0x00000004 # size
.data 0x4BCB5E7D # 80358364 => bl -0x0034A184 /* 8000E1E0 */
# region @ 804B92F8 (8 bytes)
.data 0x804B92F8 # address
.data 0x00000008 # size
.data 0x70808080 # 804B92F8 => andi. r0, r4, 0x8080
.data 0x60707070 # 804B92FC => ori r16, r3, 0x7070
# region @ 804CCB6C (4 bytes)
.data 0x804CCB6C # address
.data 0x00000004 # size
.data 0x0000001E # 804CCB6C => .invalid
# region @ 804CCBC4 (4 bytes)
.data 0x804CCBC4 # address
.data 0x00000004 # size
.data 0x00000028 # 804CCBC4 => .invalid
# region @ 804CCBF0 (4 bytes)
.data 0x804CCBF0 # address
.data 0x00000004 # size
.data 0x00000032 # 804CCBF0 => .invalid
# region @ 804CCC1C (4 bytes)
.data 0x804CCC1C # address
.data 0x00000004 # size
.data 0x0000003C # 804CCC1C => .invalid
# region @ 804CCC2C (4 bytes)
.data 0x804CCC2C # address
.data 0x00000004 # size
.data 0x0018003C # 804CCC2C => .invalid
# region @ 804CCE84 (4 bytes)
.data 0x804CCE84 # address
.data 0x00000004 # size
.data 0x00000028 # 804CCE84 => .invalid
# region @ 804D17E0 (4 bytes)
.data 0x804D17E0 # address
.data 0x00000004 # size
.data 0xFF0074EE # 804D17E0 => fsel f24, f0, f14, f19
# region @ 805DB40C (4 bytes)
.data 0x805DB40C # address
.data 0x00000004 # size
.data 0x435C0000 # 805DB40C => bc 26, 28, +0x00000000 /* 805DB40C */
# region @ 805DD0A8 (4 bytes)
.data 0x805DD0A8 # address
.data 0x00000004 # size
.data 0x46AFC800 # 805DD0A8 => .invalid sc
# region @ 805DD348 (4 bytes)
.data 0x805DD348 # address
.data 0x00000004 # size
.data 0x43480000 # 805DD348 => bc 26, 8, +0x00000000 /* 805DD348 */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,550 @@
.meta name="Bug fixes"
.meta description="Fix many minor\ngameplay, sound,\nand graphical bugs"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000B088 (88 bytes)
.data 0x8000B088 # address
.data 0x00000058 # size
.data 0x7FA3EB78 # 8000B088 => mr r3, r29
.data 0x38800000 # 8000B08C => li r4, 0x0000
.data 0x481AEC5D # 8000B090 => bl +0x001AEC5C /* 801B9CEC */
.data 0x7FA3EB78 # 8000B094 => mr r3, r29
.data 0x481AEF2C # 8000B098 => b +0x001AEF2C /* 801B9FC4 */
.data 0x881F0000 # 8000B09C => lbz r0, [r31]
.data 0x28090001 # 8000B0A0 => cmplwi r9, 1
.data 0x4082000C # 8000B0A4 => bne +0x0000000C /* 8000B0B0 */
.data 0x881F0001 # 8000B0A8 => lbz r0, [r31 + 0x0001]
.data 0x3BFF0002 # 8000B0AC => addi r31, r31, 0x0002
.data 0x48100A44 # 8000B0B0 => b +0x00100A44 /* 8010BAF4 */
.data 0x39200000 # 8000B0B4 => li r9, 0x0000
.data 0x481009D5 # 8000B0B8 => bl +0x001009D4 /* 8010BA8C */
.data 0x7F43D378 # 8000B0BC => mr r3, r26
.data 0x7F64DB78 # 8000B0C0 => mr r4, r27
.data 0x7F85E378 # 8000B0C4 => mr r5, r28
.data 0x7FA6EB78 # 8000B0C8 => mr r6, r29
.data 0x7FC7F378 # 8000B0CC => mr r7, r30
.data 0x7FE8FB78 # 8000B0D0 => mr r8, r31
.data 0x39200001 # 8000B0D4 => li r9, 0x0001
.data 0x481009B5 # 8000B0D8 => bl +0x001009B4 /* 8010BA8C */
.data 0x48102E4C # 8000B0DC => b +0x00102E4C /* 8010DF28 */
# region @ 8000B5C8 (20 bytes)
.data 0x8000B5C8 # address
.data 0x00000014 # size
.data 0x80630098 # 8000B5C8 => lwz r3, [r3 + 0x0098]
.data 0x483D8D21 # 8000B5CC => bl +0x003D8D20 /* 803E42EC */
.data 0x807F042C # 8000B5D0 => lwz r3, [r31 + 0x042C]
.data 0x809F0430 # 8000B5D4 => lwz r4, [r31 + 0x0430]
.data 0x48178D4C # 8000B5D8 => b +0x00178D4C /* 80184324 */
# region @ 8000BBD0 (32 bytes)
.data 0x8000BBD0 # address
.data 0x00000020 # size
.data 0x809F0370 # 8000BBD0 => lwz r4, [r31 + 0x0370]
.data 0x3884FC00 # 8000BBD4 => subi r4, r4, 0x0400
.data 0x909F0370 # 8000BBD8 => stw [r31 + 0x0370], r4
.data 0x807F0014 # 8000BBDC => lwz r3, [r31 + 0x0014]
.data 0x28030000 # 8000BBE0 => cmplwi r3, 0
.data 0x41820008 # 8000BBE4 => beq +0x00000008 /* 8000BBEC */
.data 0x90830060 # 8000BBE8 => stw [r3 + 0x0060], r4
.data 0x481654E4 # 8000BBEC => b +0x001654E4 /* 801710D0 */
# region @ 8000C3F8 (124 bytes)
.data 0x8000C3F8 # address
.data 0x0000007C # size
.data 0x28040000 # 8000C3F8 => cmplwi r4, 0
.data 0x4D820020 # 8000C3FC => beqlr
.data 0x9421FFF0 # 8000C400 => stwu [r1 - 0x0010], r1
.data 0x481AD8EC # 8000C404 => b +0x001AD8EC /* 801B9CF0 */
.data 0x9421FFE0 # 8000C408 => stwu [r1 - 0x0020], r1
.data 0x7C0802A6 # 8000C40C => mflr r0
.data 0x90010024 # 8000C410 => stw [r1 + 0x0024], r0
.data 0xBF410008 # 8000C414 => stmw [r1 + 0x0008], r26
.data 0x7C7F1B78 # 8000C418 => mr r31, r3
.data 0x4BFFFFDD # 8000C41C => bl -0x00000024 /* 8000C3F8 */
.data 0x3BC00000 # 8000C420 => li r30, 0x0000
.data 0x3BBF0D04 # 8000C424 => addi r29, r31, 0x0D04
.data 0x837F032C # 8000C428 => lwz r27, [r31 + 0x032C]
.data 0x839D0000 # 8000C42C => lwz r28, [r29]
.data 0x7F83E379 # 8000C430 => mr. r3, r28
.data 0x41820018 # 8000C434 => beq +0x00000018 /* 8000C44C */
.data 0x38800001 # 8000C438 => li r4, 0x0001
.data 0x480FEC5D # 8000C43C => bl +0x000FEC5C /* 8010B098 */
.data 0x7F83E378 # 8000C440 => mr r3, r28
.data 0x38800001 # 8000C444 => li r4, 0x0001
.data 0x480FEDCD # 8000C448 => bl +0x000FEDCC /* 8010B214 */
.data 0x3BBD0004 # 8000C44C => addi r29, r29, 0x0004
.data 0x3BDE0001 # 8000C450 => addi r30, r30, 0x0001
.data 0x2C1E000D # 8000C454 => cmpwi r30, 13
.data 0x4180FFD4 # 8000C458 => blt -0x0000002C /* 8000C42C */
.data 0x937F032C # 8000C45C => stw [r31 + 0x032C], r27
.data 0xBB410008 # 8000C460 => lmw r26, [r1 + 0x0008]
.data 0x80010024 # 8000C464 => lwz r0, [r1 + 0x0024]
.data 0x7C0803A6 # 8000C468 => mtlr r0
.data 0x38210020 # 8000C46C => addi r1, r1, 0x0020
.data 0x4E800020 # 8000C470 => blr
# region @ 8000C640 (20 bytes)
.data 0x8000C640 # address
.data 0x00000014 # size
.data 0x54800673 # 8000C640 => rlwinm. r0, r4, 0, 25, 25
.data 0x41820008 # 8000C644 => beq +0x00000008 /* 8000C64C */
.data 0x38800000 # 8000C648 => li r4, 0x0000
.data 0x38040009 # 8000C64C => addi r0, r4, 0x0009
.data 0x4810C848 # 8000C650 => b +0x0010C848 /* 80118E98 */
# region @ 8000C6D0 (32 bytes)
.data 0x8000C6D0 # address
.data 0x00000020 # size
.data 0x38000001 # 8000C6D0 => li r0, 0x0001
.data 0x901D0054 # 8000C6D4 => stw [r29 + 0x0054], r0
.data 0x807D0024 # 8000C6D8 => lwz r3, [r29 + 0x0024]
.data 0x48211FC4 # 8000C6DC => b +0x00211FC4 /* 8021E6A0 */
.data 0x38000001 # 8000C6E0 => li r0, 0x0001
.data 0x901F0378 # 8000C6E4 => stw [r31 + 0x0378], r0
.data 0x807F0024 # 8000C6E8 => lwz r3, [r31 + 0x0024]
.data 0x48215474 # 8000C6EC => b +0x00215474 /* 80221B60 */
# region @ 8000C8A0 (20 bytes)
.data 0x8000C8A0 # address
.data 0x00000014 # size
.data 0x1C00000A # 8000C8A0 => mulli r0, r0, 10
.data 0x57E407BD # 8000C8A4 => rlwinm. r4, r31, 0, 30, 30
.data 0x41820008 # 8000C8A8 => beq +0x00000008 /* 8000C8B0 */
.data 0x7FA00734 # 8000C8AC => extsh r0, r29
.data 0x48105F44 # 8000C8B0 => b +0x00105F44 /* 801127F4 */
# region @ 8000C8C0 (16 bytes)
.data 0x8000C8C0 # address
.data 0x00000010 # size
.data 0x7000000F # 8000C8C0 => andi. r0, r0, 0x000F
.data 0x7000004F # 8000C8C4 => andi. r0, r0, 0x004F
.data 0x2C000004 # 8000C8C8 => cmpwi r0, 4
.data 0x4E800020 # 8000C8CC => blr
# region @ 8000D980 (20 bytes)
.data 0x8000D980 # address
.data 0x00000014 # size
.data 0x807C0000 # 8000D980 => lwz r3, [r28]
.data 0x2C030013 # 8000D984 => cmpwi r3, 19
.data 0x40820008 # 8000D988 => bne +0x00000008 /* 8000D990 */
.data 0x38600002 # 8000D98C => li r3, 0x0002
.data 0x482AF934 # 8000D990 => b +0x002AF934 /* 802BD2C4 */
# region @ 8000D9A0 (24 bytes)
.data 0x8000D9A0 # address
.data 0x00000018 # size
.data 0xC042FC80 # 8000D9A0 => lfs f2, [r2 - 0x0380]
.data 0x807E0030 # 8000D9A4 => lwz r3, [r30 + 0x0030]
.data 0x70630020 # 8000D9A8 => andi. r3, r3, 0x0020
.data 0x41820008 # 8000D9AC => beq +0x00000008 /* 8000D9B4 */
.data 0xC042FC98 # 8000D9B0 => lfs f2, [r2 - 0x0368]
.data 0x483299EC # 8000D9B4 => b +0x003299EC /* 803373A0 */
# region @ 8000E1E0 (28 bytes)
.data 0x8000E1E0 # address
.data 0x0000001C # size
.data 0x7FC802A6 # 8000E1E0 => mflr r30
.data 0x38A00000 # 8000E1E4 => li r5, 0x0000
.data 0x38C0001E # 8000E1E8 => li r6, 0x001E
.data 0x38E00040 # 8000E1EC => li r7, 0x0040
.data 0x480786C5 # 8000E1F0 => bl +0x000786C4 /* 800868B4 */
.data 0x7FC803A6 # 8000E1F4 => mtlr r30
.data 0x4E800020 # 8000E1F8 => blr
# region @ 8001304C (4 bytes)
.data 0x8001304C # address
.data 0x00000004 # size
.data 0x4BFFFCC0 # 8001304C => b -0x00000340 /* 80012D0C */
# region @ 800142BC (4 bytes)
.data 0x800142BC # address
.data 0x00000004 # size
.data 0x4BFF8605 # 800142BC => bl -0x000079FC /* 8000C8C0 */
# region @ 80015CE4 (4 bytes)
.data 0x80015CE4 # address
.data 0x00000004 # size
.data 0x4BFF6BE1 # 80015CE4 => bl -0x00009420 /* 8000C8C4 */
# region @ 8009193C (8 bytes)
.data 0x8009193C # address
.data 0x00000008 # size
.data 0x4800024D # 8009193C => bl +0x0000024C /* 80091B88 */
.data 0xB3C3032C # 80091940 => sth [r3 + 0x032C], r30
# region @ 800BCB80 (4 bytes)
.data 0x800BCB80 # address
.data 0x00000004 # size
.data 0x48000010 # 800BCB80 => b +0x00000010 /* 800BCB90 */
# region @ 80104CA4 (4 bytes)
.data 0x80104CA4 # address
.data 0x00000004 # size
.data 0x4182000C # 80104CA4 => beq +0x0000000C /* 80104CB0 */
# region @ 801075D4 (4 bytes)
.data 0x801075D4 # address
.data 0x00000004 # size
.data 0x4800000C # 801075D4 => b +0x0000000C /* 801075E0 */
# region @ 801075E8 (4 bytes)
.data 0x801075E8 # address
.data 0x00000004 # size
.data 0x7C030378 # 801075E8 => mr r3, r0
# region @ 8010BAF0 (4 bytes)
.data 0x8010BAF0 # address
.data 0x00000004 # size
.data 0x4BEFF5AC # 8010BAF0 => b -0x00100A54 /* 8000B09C */
# region @ 8010DF24 (4 bytes)
.data 0x8010DF24 # address
.data 0x00000004 # size
.data 0x4BEFD190 # 8010DF24 => b -0x00102E70 /* 8000B0B4 */
# region @ 801127F0 (4 bytes)
.data 0x801127F0 # address
.data 0x00000004 # size
.data 0x4BEFA0B0 # 801127F0 => b -0x00105F50 /* 8000C8A0 */
# region @ 80114524 (4 bytes)
.data 0x80114524 # address
.data 0x00000004 # size
.data 0x38000012 # 80114524 => li r0, 0x0012
# region @ 80118764 (4 bytes)
.data 0x80118764 # address
.data 0x00000004 # size
.data 0x88040016 # 80118764 => lbz r0, [r4 + 0x0016]
# region @ 80118770 (4 bytes)
.data 0x80118770 # address
.data 0x00000004 # size
.data 0x88040017 # 80118770 => lbz r0, [r4 + 0x0017]
# region @ 80118E94 (4 bytes)
.data 0x80118E94 # address
.data 0x00000004 # size
.data 0x4BEF37AC # 80118E94 => b -0x0010C854 /* 8000C640 */
# region @ 8011CC6C (12 bytes)
.data 0x8011CC6C # address
.data 0x0000000C # size
.data 0x7C030378 # 8011CC6C => mr r3, r0
.data 0x3863FFFF # 8011CC70 => subi r3, r3, 0x0001
.data 0x4BFFFFE8 # 8011CC74 => b -0x00000018 /* 8011CC5C */
# region @ 8011CD28 (12 bytes)
.data 0x8011CD28 # address
.data 0x0000000C # size
.data 0x7C030378 # 8011CD28 => mr r3, r0
.data 0x3863FFFF # 8011CD2C => subi r3, r3, 0x0001
.data 0x4BFFFFE8 # 8011CD30 => b -0x00000018 /* 8011CD18 */
# region @ 8011CD78 (12 bytes)
.data 0x8011CD78 # address
.data 0x0000000C # size
.data 0x7C040378 # 8011CD78 => mr r4, r0
.data 0x3884FFFF # 8011CD7C => subi r4, r4, 0x0001
.data 0x4BFFFFE8 # 8011CD80 => b -0x00000018 /* 8011CD68 */
# region @ 8016679C (8 bytes)
.data 0x8016679C # address
.data 0x00000008 # size
.data 0x3C604005 # 8016679C => lis r3, 0x4005
.data 0x4800009C # 801667A0 => b +0x0000009C /* 8016683C */
# region @ 80166838 (4 bytes)
.data 0x80166838 # address
.data 0x00000004 # size
.data 0x4800001C # 80166838 => b +0x0000001C /* 80166854 */
# region @ 801710CC (4 bytes)
.data 0x801710CC # address
.data 0x00000004 # size
.data 0x4BE9AB04 # 801710CC => b -0x001654FC /* 8000BBD0 */
# region @ 801710EC (4 bytes)
.data 0x801710EC # address
.data 0x00000004 # size
.data 0x60800420 # 801710EC => ori r0, r4, 0x0420
# region @ 80184320 (4 bytes)
.data 0x80184320 # address
.data 0x00000004 # size
.data 0x4BE872A8 # 80184320 => b -0x00178D58 /* 8000B5C8 */
# region @ 80184360 (4 bytes)
.data 0x80184360 # address
.data 0x00000004 # size
.data 0x60000000 # 80184360 => nop
# region @ 80189EF0 (4 bytes)
.data 0x80189EF0 # address
.data 0x00000004 # size
.data 0x60000000 # 80189EF0 => nop
# region @ 80193874 (4 bytes)
.data 0x80193874 # address
.data 0x00000004 # size
.data 0x60000000 # 80193874 => nop
# region @ 801B9CEC (4 bytes)
.data 0x801B9CEC # address
.data 0x00000004 # size
.data 0x4BE5271C # 801B9CEC => b -0x001AD8E4 /* 8000C408 */
# region @ 801B9FC0 (4 bytes)
.data 0x801B9FC0 # address
.data 0x00000004 # size
.data 0x4BE510C8 # 801B9FC0 => b -0x001AEF38 /* 8000B088 */
# region @ 801C642C (4 bytes)
.data 0x801C642C # address
.data 0x00000004 # size
.data 0x389F02FC # 801C642C => addi r4, r31, 0x02FC
# region @ 801CA7AC (4 bytes)
.data 0x801CA7AC # address
.data 0x00000004 # size
.data 0x48000010 # 801CA7AC => b +0x00000010 /* 801CA7BC */
# region @ 8021E69C (4 bytes)
.data 0x8021E69C # address
.data 0x00000004 # size
.data 0x4BDEE034 # 8021E69C => b -0x00211FCC /* 8000C6D0 */
# region @ 80221B5C (4 bytes)
.data 0x80221B5C # address
.data 0x00000004 # size
.data 0x4BDEAB84 # 80221B5C => b -0x0021547C /* 8000C6E0 */
# region @ 8022A990 (4 bytes)
.data 0x8022A990 # address
.data 0x00000004 # size
.data 0x2C000001 # 8022A990 => cmpwi r0, 1
# region @ 8022B190 (4 bytes)
.data 0x8022B190 # address
.data 0x00000004 # size
.data 0x3880FF00 # 8022B190 => li r4, 0xFFFFFF00
# region @ 8022B1C0 (4 bytes)
.data 0x8022B1C0 # address
.data 0x00000004 # size
.data 0x3880FE80 # 8022B1C0 => li r4, 0xFFFFFE80
# region @ 8022B1F0 (4 bytes)
.data 0x8022B1F0 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 8022B1F0 => li r4, 0xFFFFFDB0
# region @ 8022DE8C (4 bytes)
.data 0x8022DE8C # address
.data 0x00000004 # size
.data 0x60000000 # 8022DE8C => nop
# region @ 8022E5C0 (4 bytes)
.data 0x8022E5C0 # address
.data 0x00000004 # size
.data 0x41810630 # 8022E5C0 => bgt +0x00000630 /* 8022EBF0 */
# region @ 8022F8E4 (4 bytes)
.data 0x8022F8E4 # address
.data 0x00000004 # size
.data 0x3880FF00 # 8022F8E4 => li r4, 0xFFFFFF00
# region @ 8022F914 (4 bytes)
.data 0x8022F914 # address
.data 0x00000004 # size
.data 0x3880FE80 # 8022F914 => li r4, 0xFFFFFE80
# region @ 8022F944 (4 bytes)
.data 0x8022F944 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 8022F944 => li r4, 0xFFFFFDB0
# region @ 802300F0 (4 bytes)
.data 0x802300F0 # address
.data 0x00000004 # size
.data 0x3880FF00 # 802300F0 => li r4, 0xFFFFFF00
# region @ 80230120 (4 bytes)
.data 0x80230120 # address
.data 0x00000004 # size
.data 0x3880FE80 # 80230120 => li r4, 0xFFFFFE80
# region @ 80230150 (4 bytes)
.data 0x80230150 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80230150 => li r4, 0xFFFFFDB0
# region @ 802316F4 (4 bytes)
.data 0x802316F4 # address
.data 0x00000004 # size
.data 0x3880FF00 # 802316F4 => li r4, 0xFFFFFF00
# region @ 80231724 (4 bytes)
.data 0x80231724 # address
.data 0x00000004 # size
.data 0x3880FE80 # 80231724 => li r4, 0xFFFFFE80
# region @ 80231754 (4 bytes)
.data 0x80231754 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80231754 => li r4, 0xFFFFFDB0
# region @ 80232464 (4 bytes)
.data 0x80232464 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80232464 => li r4, 0xFFFFFF00
# region @ 80232494 (4 bytes)
.data 0x80232494 # address
.data 0x00000004 # size
.data 0x3880FE80 # 80232494 => li r4, 0xFFFFFE80
# region @ 802324C4 (4 bytes)
.data 0x802324C4 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 802324C4 => li r4, 0xFFFFFDB0
# region @ 80232D58 (4 bytes)
.data 0x80232D58 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80232D58 => li r4, 0xFFFFFF00
# region @ 80232D90 (4 bytes)
.data 0x80232D90 # address
.data 0x00000004 # size
.data 0x3880FE80 # 80232D90 => li r4, 0xFFFFFE80
# region @ 80232DC8 (4 bytes)
.data 0x80232DC8 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80232DC8 => li r4, 0xFFFFFDB0
# region @ 80234E04 (4 bytes)
.data 0x80234E04 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80234E04 => li r4, 0xFFFFFF00
# region @ 80234E34 (4 bytes)
.data 0x80234E34 # address
.data 0x00000004 # size
.data 0x3880FE80 # 80234E34 => li r4, 0xFFFFFE80
# region @ 80234E64 (4 bytes)
.data 0x80234E64 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80234E64 => li r4, 0xFFFFFDB0
# region @ 80237430 (4 bytes)
.data 0x80237430 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80237430 => li r4, 0xFFFFFF00
# region @ 8023746C (4 bytes)
.data 0x8023746C # address
.data 0x00000004 # size
.data 0x3880FE80 # 8023746C => li r4, 0xFFFFFE80
# region @ 802374A8 (4 bytes)
.data 0x802374A8 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 802374A8 => li r4, 0xFFFFFDB0
# region @ 80237C08 (4 bytes)
.data 0x80237C08 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80237C08 => li r4, 0xFFFFFF00
# region @ 80237C38 (4 bytes)
.data 0x80237C38 # address
.data 0x00000004 # size
.data 0x3880FE80 # 80237C38 => li r4, 0xFFFFFE80
# region @ 80237C68 (4 bytes)
.data 0x80237C68 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80237C68 => li r4, 0xFFFFFDB0
# region @ 8023861C (4 bytes)
.data 0x8023861C # address
.data 0x00000004 # size
.data 0x3880FF00 # 8023861C => li r4, 0xFFFFFF00
# region @ 8023864C (4 bytes)
.data 0x8023864C # address
.data 0x00000004 # size
.data 0x3880FE80 # 8023864C => li r4, 0xFFFFFE80
# region @ 8023867C (4 bytes)
.data 0x8023867C # address
.data 0x00000004 # size
.data 0x3880FDB0 # 8023867C => li r4, 0xFFFFFDB0
# region @ 80238FF4 (4 bytes)
.data 0x80238FF4 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80238FF4 => li r4, 0xFFFFFF00
# region @ 80239024 (4 bytes)
.data 0x80239024 # address
.data 0x00000004 # size
.data 0x3880FE80 # 80239024 => li r4, 0xFFFFFE80
# region @ 80239054 (4 bytes)
.data 0x80239054 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80239054 => li r4, 0xFFFFFDB0
# region @ 8023C924 (4 bytes)
.data 0x8023C924 # address
.data 0x00000004 # size
.data 0x3880FF00 # 8023C924 => li r4, 0xFFFFFF00
# region @ 8023C954 (4 bytes)
.data 0x8023C954 # address
.data 0x00000004 # size
.data 0x3880FE80 # 8023C954 => li r4, 0xFFFFFE80
# region @ 8023C984 (4 bytes)
.data 0x8023C984 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 8023C984 => li r4, 0xFFFFFDB0
# region @ 802519A4 (4 bytes)
.data 0x802519A4 # address
.data 0x00000004 # size
.data 0x60000000 # 802519A4 => nop
# region @ 80269898 (4 bytes)
.data 0x80269898 # address
.data 0x00000004 # size
.data 0x60000000 # 80269898 => nop
# region @ 8026F548 (4 bytes)
.data 0x8026F548 # address
.data 0x00000004 # size
.data 0x3884AAFA # 8026F548 => subi r4, r4, 0x5506
# region @ 8026F65C (4 bytes)
.data 0x8026F65C # address
.data 0x00000004 # size
.data 0x3863AAFA # 8026F65C => subi r3, r3, 0x5506
# region @ 8026F6E4 (4 bytes)
.data 0x8026F6E4 # address
.data 0x00000004 # size
.data 0x3883AAFA # 8026F6E4 => subi r4, r3, 0x5506
# region @ 802BD2C0 (4 bytes)
.data 0x802BD2C0 # address
.data 0x00000004 # size
.data 0x4BD506C0 # 802BD2C0 => b -0x002AF940 /* 8000D980 */
# region @ 802FDB6C (4 bytes)
.data 0x802FDB6C # address
.data 0x00000004 # size
.data 0x2C030001 # 802FDB6C => cmpwi r3, 1
# region @ 803037D0 (28 bytes)
.data 0x803037D0 # address
.data 0x0000001C # size
.data 0x48000020 # 803037D0 => b +0x00000020 /* 803037F0 */
.data 0x3863A830 # 803037D4 => subi r3, r3, 0x57D0
.data 0x800DB9B4 # 803037D8 => lwz r0, [r13 - 0x464C]
.data 0x2C000023 # 803037DC => cmpwi r0, 35
.data 0x40820008 # 803037E0 => bne +0x00000008 /* 803037E8 */
.data 0x3863FB28 # 803037E4 => subi r3, r3, 0x04D8
.data 0x4800008C # 803037E8 => b +0x0000008C /* 80303874 */
# region @ 80303870 (4 bytes)
.data 0x80303870 # address
.data 0x00000004 # size
.data 0x4BFFFF64 # 80303870 => b -0x0000009C /* 803037D4 */
# region @ 8033739C (4 bytes)
.data 0x8033739C # address
.data 0x00000004 # size
.data 0x4BCD6604 # 8033739C => b -0x003299FC /* 8000D9A0 */
# region @ 80358074 (4 bytes)
.data 0x80358074 # address
.data 0x00000004 # size
.data 0x388001E8 # 80358074 => li r4, 0x01E8
# region @ 80358098 (4 bytes)
.data 0x80358098 # address
.data 0x00000004 # size
.data 0x4BCB6149 # 80358098 => bl -0x00349EB8 /* 8000E1E0 */
# region @ 80358108 (4 bytes)
.data 0x80358108 # address
.data 0x00000004 # size
.data 0x388001E8 # 80358108 => li r4, 0x01E8
# region @ 80358118 (4 bytes)
.data 0x80358118 # address
.data 0x00000004 # size
.data 0x4BCB60C9 # 80358118 => bl -0x00349F38 /* 8000E1E0 */
# region @ 804B90B8 (8 bytes)
.data 0x804B90B8 # address
.data 0x00000008 # size
.data 0x70808080 # 804B90B8 => andi. r0, r4, 0x8080
.data 0x60707070 # 804B90BC => ori r16, r3, 0x7070
# region @ 804CC90C (4 bytes)
.data 0x804CC90C # address
.data 0x00000004 # size
.data 0x0000001E # 804CC90C => .invalid
# region @ 804CC964 (4 bytes)
.data 0x804CC964 # address
.data 0x00000004 # size
.data 0x00000028 # 804CC964 => .invalid
# region @ 804CC990 (4 bytes)
.data 0x804CC990 # address
.data 0x00000004 # size
.data 0x00000032 # 804CC990 => .invalid
# region @ 804CC9BC (4 bytes)
.data 0x804CC9BC # address
.data 0x00000004 # size
.data 0x0000003C # 804CC9BC => .invalid
# region @ 804CC9CC (4 bytes)
.data 0x804CC9CC # address
.data 0x00000004 # size
.data 0x0018003C # 804CC9CC => .invalid
# region @ 804CCC24 (4 bytes)
.data 0x804CCC24 # address
.data 0x00000004 # size
.data 0x00000028 # 804CCC24 => .invalid
# region @ 804D1580 (4 bytes)
.data 0x804D1580 # address
.data 0x00000004 # size
.data 0xFF0074EE # 804D1580 => fsel f24, f0, f14, f19
# region @ 805DB1AC (4 bytes)
.data 0x805DB1AC # address
.data 0x00000004 # size
.data 0x435C0000 # 805DB1AC => bc 26, 28, +0x00000000 /* 805DB1AC */
# region @ 805DCE48 (4 bytes)
.data 0x805DCE48 # address
.data 0x00000004 # size
.data 0x46AFC800 # 805DCE48 => .invalid sc
# region @ 805DD0E8 (4 bytes)
.data 0x805DD0E8 # address
.data 0x00000004 # size
.data 0x43480000 # 805DD0E8 => bc 26, 8, +0x00000000 /* 805DD0E8 */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,550 @@
.meta name="Bug fixes"
.meta description="Fix many minor\ngameplay, sound,\nand graphical bugs"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000B088 (88 bytes)
.data 0x8000B088 # address
.data 0x00000058 # size
.data 0x7FA3EB78 # 8000B088 => mr r3, r29
.data 0x38800000 # 8000B08C => li r4, 0x0000
.data 0x481AF17D # 8000B090 => bl +0x001AF17C /* 801BA20C */
.data 0x7FA3EB78 # 8000B094 => mr r3, r29
.data 0x481AF44C # 8000B098 => b +0x001AF44C /* 801BA4E4 */
.data 0x881F0000 # 8000B09C => lbz r0, [r31]
.data 0x28090001 # 8000B0A0 => cmplwi r9, 1
.data 0x4082000C # 8000B0A4 => bne +0x0000000C /* 8000B0B0 */
.data 0x881F0001 # 8000B0A8 => lbz r0, [r31 + 0x0001]
.data 0x3BFF0002 # 8000B0AC => addi r31, r31, 0x0002
.data 0x48100C44 # 8000B0B0 => b +0x00100C44 /* 8010BCF4 */
.data 0x39200000 # 8000B0B4 => li r9, 0x0000
.data 0x48100BD5 # 8000B0B8 => bl +0x00100BD4 /* 8010BC8C */
.data 0x7F43D378 # 8000B0BC => mr r3, r26
.data 0x7F64DB78 # 8000B0C0 => mr r4, r27
.data 0x7F85E378 # 8000B0C4 => mr r5, r28
.data 0x7FA6EB78 # 8000B0C8 => mr r6, r29
.data 0x7FC7F378 # 8000B0CC => mr r7, r30
.data 0x7FE8FB78 # 8000B0D0 => mr r8, r31
.data 0x39200001 # 8000B0D4 => li r9, 0x0001
.data 0x48100BB5 # 8000B0D8 => bl +0x00100BB4 /* 8010BC8C */
.data 0x48103040 # 8000B0DC => b +0x00103040 /* 8010E11C */
# region @ 8000B5C8 (20 bytes)
.data 0x8000B5C8 # address
.data 0x00000014 # size
.data 0x80630098 # 8000B5C8 => lwz r3, [r3 + 0x0098]
.data 0x483D7BE1 # 8000B5CC => bl +0x003D7BE0 /* 803E31AC */
.data 0x807F042C # 8000B5D0 => lwz r3, [r31 + 0x042C]
.data 0x809F0430 # 8000B5D4 => lwz r4, [r31 + 0x0430]
.data 0x48179274 # 8000B5D8 => b +0x00179274 /* 8018484C */
# region @ 8000BBD0 (32 bytes)
.data 0x8000BBD0 # address
.data 0x00000020 # size
.data 0x809F0370 # 8000BBD0 => lwz r4, [r31 + 0x0370]
.data 0x3884FC00 # 8000BBD4 => subi r4, r4, 0x0400
.data 0x909F0370 # 8000BBD8 => stw [r31 + 0x0370], r4
.data 0x807F0014 # 8000BBDC => lwz r3, [r31 + 0x0014]
.data 0x28030000 # 8000BBE0 => cmplwi r3, 0
.data 0x41820008 # 8000BBE4 => beq +0x00000008 /* 8000BBEC */
.data 0x90830060 # 8000BBE8 => stw [r3 + 0x0060], r4
.data 0x48165A0C # 8000BBEC => b +0x00165A0C /* 801715F8 */
# region @ 8000C3F8 (124 bytes)
.data 0x8000C3F8 # address
.data 0x0000007C # size
.data 0x28040000 # 8000C3F8 => cmplwi r4, 0
.data 0x4D820020 # 8000C3FC => beqlr
.data 0x9421FFF0 # 8000C400 => stwu [r1 - 0x0010], r1
.data 0x481ADE0C # 8000C404 => b +0x001ADE0C /* 801BA210 */
.data 0x9421FFE0 # 8000C408 => stwu [r1 - 0x0020], r1
.data 0x7C0802A6 # 8000C40C => mflr r0
.data 0x90010024 # 8000C410 => stw [r1 + 0x0024], r0
.data 0xBF410008 # 8000C414 => stmw [r1 + 0x0008], r26
.data 0x7C7F1B78 # 8000C418 => mr r31, r3
.data 0x4BFFFFDD # 8000C41C => bl -0x00000024 /* 8000C3F8 */
.data 0x3BC00000 # 8000C420 => li r30, 0x0000
.data 0x3BBF0D04 # 8000C424 => addi r29, r31, 0x0D04
.data 0x837F032C # 8000C428 => lwz r27, [r31 + 0x032C]
.data 0x839D0000 # 8000C42C => lwz r28, [r29]
.data 0x7F83E379 # 8000C430 => mr. r3, r28
.data 0x41820018 # 8000C434 => beq +0x00000018 /* 8000C44C */
.data 0x38800001 # 8000C438 => li r4, 0x0001
.data 0x480FEE5D # 8000C43C => bl +0x000FEE5C /* 8010B298 */
.data 0x7F83E378 # 8000C440 => mr r3, r28
.data 0x38800001 # 8000C444 => li r4, 0x0001
.data 0x480FEFCD # 8000C448 => bl +0x000FEFCC /* 8010B414 */
.data 0x3BBD0004 # 8000C44C => addi r29, r29, 0x0004
.data 0x3BDE0001 # 8000C450 => addi r30, r30, 0x0001
.data 0x2C1E000D # 8000C454 => cmpwi r30, 13
.data 0x4180FFD4 # 8000C458 => blt -0x0000002C /* 8000C42C */
.data 0x937F032C # 8000C45C => stw [r31 + 0x032C], r27
.data 0xBB410008 # 8000C460 => lmw r26, [r1 + 0x0008]
.data 0x80010024 # 8000C464 => lwz r0, [r1 + 0x0024]
.data 0x7C0803A6 # 8000C468 => mtlr r0
.data 0x38210020 # 8000C46C => addi r1, r1, 0x0020
.data 0x4E800020 # 8000C470 => blr
# region @ 8000C640 (20 bytes)
.data 0x8000C640 # address
.data 0x00000014 # size
.data 0x54800673 # 8000C640 => rlwinm. r0, r4, 0, 25, 25
.data 0x41820008 # 8000C644 => beq +0x00000008 /* 8000C64C */
.data 0x38800000 # 8000C648 => li r4, 0x0000
.data 0x38040009 # 8000C64C => addi r0, r4, 0x0009
.data 0x4810CA30 # 8000C650 => b +0x0010CA30 /* 80119080 */
# region @ 8000C6D0 (32 bytes)
.data 0x8000C6D0 # address
.data 0x00000020 # size
.data 0x38000001 # 8000C6D0 => li r0, 0x0001
.data 0x901D0054 # 8000C6D4 => stw [r29 + 0x0054], r0
.data 0x807D0024 # 8000C6D8 => lwz r3, [r29 + 0x0024]
.data 0x48211B90 # 8000C6DC => b +0x00211B90 /* 8021E26C */
.data 0x38000001 # 8000C6E0 => li r0, 0x0001
.data 0x901F0378 # 8000C6E4 => stw [r31 + 0x0378], r0
.data 0x807F0024 # 8000C6E8 => lwz r3, [r31 + 0x0024]
.data 0x48215040 # 8000C6EC => b +0x00215040 /* 8022172C */
# region @ 8000C8A0 (20 bytes)
.data 0x8000C8A0 # address
.data 0x00000014 # size
.data 0x1C00000A # 8000C8A0 => mulli r0, r0, 10
.data 0x57E407BD # 8000C8A4 => rlwinm. r4, r31, 0, 30, 30
.data 0x41820008 # 8000C8A8 => beq +0x00000008 /* 8000C8B0 */
.data 0x7FA00734 # 8000C8AC => extsh r0, r29
.data 0x48106138 # 8000C8B0 => b +0x00106138 /* 801129E8 */
# region @ 8000C8C0 (16 bytes)
.data 0x8000C8C0 # address
.data 0x00000010 # size
.data 0x7000000F # 8000C8C0 => andi. r0, r0, 0x000F
.data 0x7000004F # 8000C8C4 => andi. r0, r0, 0x004F
.data 0x2C000004 # 8000C8C8 => cmpwi r0, 4
.data 0x4E800020 # 8000C8CC => blr
# region @ 8000D980 (20 bytes)
.data 0x8000D980 # address
.data 0x00000014 # size
.data 0x807C0000 # 8000D980 => lwz r3, [r28]
.data 0x2C030013 # 8000D984 => cmpwi r3, 19
.data 0x40820008 # 8000D988 => bne +0x00000008 /* 8000D990 */
.data 0x38600002 # 8000D98C => li r3, 0x0002
.data 0x482AF27C # 8000D990 => b +0x002AF27C /* 802BCC0C */
# region @ 8000D9A0 (24 bytes)
.data 0x8000D9A0 # address
.data 0x00000018 # size
.data 0xC042FC88 # 8000D9A0 => lfs f2, [r2 - 0x0378]
.data 0x807E0030 # 8000D9A4 => lwz r3, [r30 + 0x0030]
.data 0x70630020 # 8000D9A8 => andi. r3, r3, 0x0020
.data 0x41820008 # 8000D9AC => beq +0x00000008 /* 8000D9B4 */
.data 0xC042FCA0 # 8000D9B0 => lfs f2, [r2 - 0x0360]
.data 0x48329004 # 8000D9B4 => b +0x00329004 /* 803369B8 */
# region @ 8000E1E0 (28 bytes)
.data 0x8000E1E0 # address
.data 0x0000001C # size
.data 0x7FC802A6 # 8000E1E0 => mflr r30
.data 0x38A00000 # 8000E1E4 => li r5, 0x0000
.data 0x38C0001E # 8000E1E8 => li r6, 0x001E
.data 0x38E00040 # 8000E1EC => li r7, 0x0040
.data 0x4807869D # 8000E1F0 => bl +0x0007869C /* 8008688C */
.data 0x7FC803A6 # 8000E1F4 => mtlr r30
.data 0x4E800020 # 8000E1F8 => blr
# region @ 800130C4 (4 bytes)
.data 0x800130C4 # address
.data 0x00000004 # size
.data 0x4BFFFCC0 # 800130C4 => b -0x00000340 /* 80012D84 */
# region @ 80014334 (4 bytes)
.data 0x80014334 # address
.data 0x00000004 # size
.data 0x4BFF858D # 80014334 => bl -0x00007A74 /* 8000C8C0 */
# region @ 80015D5C (4 bytes)
.data 0x80015D5C # address
.data 0x00000004 # size
.data 0x4BFF6B69 # 80015D5C => bl -0x00009498 /* 8000C8C4 */
# region @ 80091914 (8 bytes)
.data 0x80091914 # address
.data 0x00000008 # size
.data 0x4800024D # 80091914 => bl +0x0000024C /* 80091B60 */
.data 0xB3C3032C # 80091918 => sth [r3 + 0x032C], r30
# region @ 800BCB58 (4 bytes)
.data 0x800BCB58 # address
.data 0x00000004 # size
.data 0x48000010 # 800BCB58 => b +0x00000010 /* 800BCB68 */
# region @ 80104EA4 (4 bytes)
.data 0x80104EA4 # address
.data 0x00000004 # size
.data 0x4182000C # 80104EA4 => beq +0x0000000C /* 80104EB0 */
# region @ 801077D4 (4 bytes)
.data 0x801077D4 # address
.data 0x00000004 # size
.data 0x4800000C # 801077D4 => b +0x0000000C /* 801077E0 */
# region @ 801077E8 (4 bytes)
.data 0x801077E8 # address
.data 0x00000004 # size
.data 0x7C030378 # 801077E8 => mr r3, r0
# region @ 8010BCF0 (4 bytes)
.data 0x8010BCF0 # address
.data 0x00000004 # size
.data 0x4BEFF3AC # 8010BCF0 => b -0x00100C54 /* 8000B09C */
# region @ 8010E118 (4 bytes)
.data 0x8010E118 # address
.data 0x00000004 # size
.data 0x4BEFCF9C # 8010E118 => b -0x00103064 /* 8000B0B4 */
# region @ 801129E4 (4 bytes)
.data 0x801129E4 # address
.data 0x00000004 # size
.data 0x4BEF9EBC # 801129E4 => b -0x00106144 /* 8000C8A0 */
# region @ 8011470C (4 bytes)
.data 0x8011470C # address
.data 0x00000004 # size
.data 0x38000012 # 8011470C => li r0, 0x0012
# region @ 8011894C (4 bytes)
.data 0x8011894C # address
.data 0x00000004 # size
.data 0x88040016 # 8011894C => lbz r0, [r4 + 0x0016]
# region @ 80118958 (4 bytes)
.data 0x80118958 # address
.data 0x00000004 # size
.data 0x88040017 # 80118958 => lbz r0, [r4 + 0x0017]
# region @ 8011907C (4 bytes)
.data 0x8011907C # address
.data 0x00000004 # size
.data 0x4BEF35C4 # 8011907C => b -0x0010CA3C /* 8000C640 */
# region @ 8011CE54 (12 bytes)
.data 0x8011CE54 # address
.data 0x0000000C # size
.data 0x7C030378 # 8011CE54 => mr r3, r0
.data 0x3863FFFF # 8011CE58 => subi r3, r3, 0x0001
.data 0x4BFFFFE8 # 8011CE5C => b -0x00000018 /* 8011CE44 */
# region @ 8011CF10 (12 bytes)
.data 0x8011CF10 # address
.data 0x0000000C # size
.data 0x7C030378 # 8011CF10 => mr r3, r0
.data 0x3863FFFF # 8011CF14 => subi r3, r3, 0x0001
.data 0x4BFFFFE8 # 8011CF18 => b -0x00000018 /* 8011CF00 */
# region @ 8011CF60 (12 bytes)
.data 0x8011CF60 # address
.data 0x0000000C # size
.data 0x7C040378 # 8011CF60 => mr r4, r0
.data 0x3884FFFF # 8011CF64 => subi r4, r4, 0x0001
.data 0x4BFFFFE8 # 8011CF68 => b -0x00000018 /* 8011CF50 */
# region @ 80166CC4 (8 bytes)
.data 0x80166CC4 # address
.data 0x00000008 # size
.data 0x3C604005 # 80166CC4 => lis r3, 0x4005
.data 0x4800009C # 80166CC8 => b +0x0000009C /* 80166D64 */
# region @ 80166D60 (4 bytes)
.data 0x80166D60 # address
.data 0x00000004 # size
.data 0x4800001C # 80166D60 => b +0x0000001C /* 80166D7C */
# region @ 801715F4 (4 bytes)
.data 0x801715F4 # address
.data 0x00000004 # size
.data 0x4BE9A5DC # 801715F4 => b -0x00165A24 /* 8000BBD0 */
# region @ 80171614 (4 bytes)
.data 0x80171614 # address
.data 0x00000004 # size
.data 0x60800420 # 80171614 => ori r0, r4, 0x0420
# region @ 80184848 (4 bytes)
.data 0x80184848 # address
.data 0x00000004 # size
.data 0x4BE86D80 # 80184848 => b -0x00179280 /* 8000B5C8 */
# region @ 80184888 (4 bytes)
.data 0x80184888 # address
.data 0x00000004 # size
.data 0x60000000 # 80184888 => nop
# region @ 8018A418 (4 bytes)
.data 0x8018A418 # address
.data 0x00000004 # size
.data 0x60000000 # 8018A418 => nop
# region @ 80193D9C (4 bytes)
.data 0x80193D9C # address
.data 0x00000004 # size
.data 0x60000000 # 80193D9C => nop
# region @ 801BA20C (4 bytes)
.data 0x801BA20C # address
.data 0x00000004 # size
.data 0x4BE521FC # 801BA20C => b -0x001ADE04 /* 8000C408 */
# region @ 801BA4E0 (4 bytes)
.data 0x801BA4E0 # address
.data 0x00000004 # size
.data 0x4BE50BA8 # 801BA4E0 => b -0x001AF458 /* 8000B088 */
# region @ 801C694C (4 bytes)
.data 0x801C694C # address
.data 0x00000004 # size
.data 0x389F02FC # 801C694C => addi r4, r31, 0x02FC
# region @ 801CACCC (4 bytes)
.data 0x801CACCC # address
.data 0x00000004 # size
.data 0x48000010 # 801CACCC => b +0x00000010 /* 801CACDC */
# region @ 8021E268 (4 bytes)
.data 0x8021E268 # address
.data 0x00000004 # size
.data 0x4BDEE468 # 8021E268 => b -0x00211B98 /* 8000C6D0 */
# region @ 80221728 (4 bytes)
.data 0x80221728 # address
.data 0x00000004 # size
.data 0x4BDEAFB8 # 80221728 => b -0x00215048 /* 8000C6E0 */
# region @ 8022A55C (4 bytes)
.data 0x8022A55C # address
.data 0x00000004 # size
.data 0x2C000001 # 8022A55C => cmpwi r0, 1
# region @ 8022AD5C (4 bytes)
.data 0x8022AD5C # address
.data 0x00000004 # size
.data 0x3880FF00 # 8022AD5C => li r4, 0xFFFFFF00
# region @ 8022AD8C (4 bytes)
.data 0x8022AD8C # address
.data 0x00000004 # size
.data 0x3880FE80 # 8022AD8C => li r4, 0xFFFFFE80
# region @ 8022ADBC (4 bytes)
.data 0x8022ADBC # address
.data 0x00000004 # size
.data 0x3880FDB0 # 8022ADBC => li r4, 0xFFFFFDB0
# region @ 8022DA58 (4 bytes)
.data 0x8022DA58 # address
.data 0x00000004 # size
.data 0x60000000 # 8022DA58 => nop
# region @ 8022E18C (4 bytes)
.data 0x8022E18C # address
.data 0x00000004 # size
.data 0x41810630 # 8022E18C => bgt +0x00000630 /* 8022E7BC */
# region @ 8022F4B0 (4 bytes)
.data 0x8022F4B0 # address
.data 0x00000004 # size
.data 0x3880FF00 # 8022F4B0 => li r4, 0xFFFFFF00
# region @ 8022F4E0 (4 bytes)
.data 0x8022F4E0 # address
.data 0x00000004 # size
.data 0x3880FE80 # 8022F4E0 => li r4, 0xFFFFFE80
# region @ 8022F510 (4 bytes)
.data 0x8022F510 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 8022F510 => li r4, 0xFFFFFDB0
# region @ 8022FCBC (4 bytes)
.data 0x8022FCBC # address
.data 0x00000004 # size
.data 0x3880FF00 # 8022FCBC => li r4, 0xFFFFFF00
# region @ 8022FCEC (4 bytes)
.data 0x8022FCEC # address
.data 0x00000004 # size
.data 0x3880FE80 # 8022FCEC => li r4, 0xFFFFFE80
# region @ 8022FD1C (4 bytes)
.data 0x8022FD1C # address
.data 0x00000004 # size
.data 0x3880FDB0 # 8022FD1C => li r4, 0xFFFFFDB0
# region @ 802312C0 (4 bytes)
.data 0x802312C0 # address
.data 0x00000004 # size
.data 0x3880FF00 # 802312C0 => li r4, 0xFFFFFF00
# region @ 802312F0 (4 bytes)
.data 0x802312F0 # address
.data 0x00000004 # size
.data 0x3880FE80 # 802312F0 => li r4, 0xFFFFFE80
# region @ 80231320 (4 bytes)
.data 0x80231320 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80231320 => li r4, 0xFFFFFDB0
# region @ 80232030 (4 bytes)
.data 0x80232030 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80232030 => li r4, 0xFFFFFF00
# region @ 80232060 (4 bytes)
.data 0x80232060 # address
.data 0x00000004 # size
.data 0x3880FE80 # 80232060 => li r4, 0xFFFFFE80
# region @ 80232090 (4 bytes)
.data 0x80232090 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80232090 => li r4, 0xFFFFFDB0
# region @ 80232924 (4 bytes)
.data 0x80232924 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80232924 => li r4, 0xFFFFFF00
# region @ 8023295C (4 bytes)
.data 0x8023295C # address
.data 0x00000004 # size
.data 0x3880FE80 # 8023295C => li r4, 0xFFFFFE80
# region @ 80232994 (4 bytes)
.data 0x80232994 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80232994 => li r4, 0xFFFFFDB0
# region @ 802349D0 (4 bytes)
.data 0x802349D0 # address
.data 0x00000004 # size
.data 0x3880FF00 # 802349D0 => li r4, 0xFFFFFF00
# region @ 80234A00 (4 bytes)
.data 0x80234A00 # address
.data 0x00000004 # size
.data 0x3880FE80 # 80234A00 => li r4, 0xFFFFFE80
# region @ 80234A30 (4 bytes)
.data 0x80234A30 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80234A30 => li r4, 0xFFFFFDB0
# region @ 80236FFC (4 bytes)
.data 0x80236FFC # address
.data 0x00000004 # size
.data 0x3880FF00 # 80236FFC => li r4, 0xFFFFFF00
# region @ 80237038 (4 bytes)
.data 0x80237038 # address
.data 0x00000004 # size
.data 0x3880FE80 # 80237038 => li r4, 0xFFFFFE80
# region @ 80237074 (4 bytes)
.data 0x80237074 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80237074 => li r4, 0xFFFFFDB0
# region @ 802377D4 (4 bytes)
.data 0x802377D4 # address
.data 0x00000004 # size
.data 0x3880FF00 # 802377D4 => li r4, 0xFFFFFF00
# region @ 80237804 (4 bytes)
.data 0x80237804 # address
.data 0x00000004 # size
.data 0x3880FE80 # 80237804 => li r4, 0xFFFFFE80
# region @ 80237834 (4 bytes)
.data 0x80237834 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80237834 => li r4, 0xFFFFFDB0
# region @ 802381E8 (4 bytes)
.data 0x802381E8 # address
.data 0x00000004 # size
.data 0x3880FF00 # 802381E8 => li r4, 0xFFFFFF00
# region @ 80238218 (4 bytes)
.data 0x80238218 # address
.data 0x00000004 # size
.data 0x3880FE80 # 80238218 => li r4, 0xFFFFFE80
# region @ 80238248 (4 bytes)
.data 0x80238248 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80238248 => li r4, 0xFFFFFDB0
# region @ 80238BC0 (4 bytes)
.data 0x80238BC0 # address
.data 0x00000004 # size
.data 0x3880FF00 # 80238BC0 => li r4, 0xFFFFFF00
# region @ 80238BF0 (4 bytes)
.data 0x80238BF0 # address
.data 0x00000004 # size
.data 0x3880FE80 # 80238BF0 => li r4, 0xFFFFFE80
# region @ 80238C20 (4 bytes)
.data 0x80238C20 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 80238C20 => li r4, 0xFFFFFDB0
# region @ 8023C4F0 (4 bytes)
.data 0x8023C4F0 # address
.data 0x00000004 # size
.data 0x3880FF00 # 8023C4F0 => li r4, 0xFFFFFF00
# region @ 8023C520 (4 bytes)
.data 0x8023C520 # address
.data 0x00000004 # size
.data 0x3880FE80 # 8023C520 => li r4, 0xFFFFFE80
# region @ 8023C550 (4 bytes)
.data 0x8023C550 # address
.data 0x00000004 # size
.data 0x3880FDB0 # 8023C550 => li r4, 0xFFFFFDB0
# region @ 802514B0 (4 bytes)
.data 0x802514B0 # address
.data 0x00000004 # size
.data 0x60000000 # 802514B0 => nop
# region @ 802693A4 (4 bytes)
.data 0x802693A4 # address
.data 0x00000004 # size
.data 0x60000000 # 802693A4 => nop
# region @ 8026EF44 (4 bytes)
.data 0x8026EF44 # address
.data 0x00000004 # size
.data 0x3884AAFA # 8026EF44 => subi r4, r4, 0x5506
# region @ 8026F058 (4 bytes)
.data 0x8026F058 # address
.data 0x00000004 # size
.data 0x3863AAFA # 8026F058 => subi r3, r3, 0x5506
# region @ 8026F0E0 (4 bytes)
.data 0x8026F0E0 # address
.data 0x00000004 # size
.data 0x3883AAFA # 8026F0E0 => subi r4, r3, 0x5506
# region @ 802BCC08 (4 bytes)
.data 0x802BCC08 # address
.data 0x00000004 # size
.data 0x4BD50D78 # 802BCC08 => b -0x002AF288 /* 8000D980 */
# region @ 802FD100 (4 bytes)
.data 0x802FD100 # address
.data 0x00000004 # size
.data 0x2C030001 # 802FD100 => cmpwi r3, 1
# region @ 80302D64 (28 bytes)
.data 0x80302D64 # address
.data 0x0000001C # size
.data 0x48000020 # 80302D64 => b +0x00000020 /* 80302D84 */
.data 0x3863A830 # 80302D68 => subi r3, r3, 0x57D0
.data 0x800DBA04 # 80302D6C => lwz r0, [r13 - 0x45FC]
.data 0x2C000023 # 80302D70 => cmpwi r0, 35
.data 0x40820008 # 80302D74 => bne +0x00000008 /* 80302D7C */
.data 0x3863FB28 # 80302D78 => subi r3, r3, 0x04D8
.data 0x4800008C # 80302D7C => b +0x0000008C /* 80302E08 */
# region @ 80302E04 (4 bytes)
.data 0x80302E04 # address
.data 0x00000004 # size
.data 0x4BFFFF64 # 80302E04 => b -0x0000009C /* 80302D68 */
# region @ 803369B4 (4 bytes)
.data 0x803369B4 # address
.data 0x00000004 # size
.data 0x4BCD6FEC # 803369B4 => b -0x00329014 /* 8000D9A0 */
# region @ 80357834 (4 bytes)
.data 0x80357834 # address
.data 0x00000004 # size
.data 0x388001E8 # 80357834 => li r4, 0x01E8
# region @ 80357858 (4 bytes)
.data 0x80357858 # address
.data 0x00000004 # size
.data 0x4BCB6989 # 80357858 => bl -0x00349678 /* 8000E1E0 */
# region @ 803578C8 (4 bytes)
.data 0x803578C8 # address
.data 0x00000004 # size
.data 0x388001E8 # 803578C8 => li r4, 0x01E8
# region @ 803578D8 (4 bytes)
.data 0x803578D8 # address
.data 0x00000004 # size
.data 0x4BCB6909 # 803578D8 => bl -0x003496F8 /* 8000E1E0 */
# region @ 804B8E10 (8 bytes)
.data 0x804B8E10 # address
.data 0x00000008 # size
.data 0x70808080 # 804B8E10 => andi. r0, r4, 0x8080
.data 0x60707070 # 804B8E14 => ori r16, r3, 0x7070
# region @ 804CC5D4 (4 bytes)
.data 0x804CC5D4 # address
.data 0x00000004 # size
.data 0x0000001E # 804CC5D4 => .invalid
# region @ 804CC62C (4 bytes)
.data 0x804CC62C # address
.data 0x00000004 # size
.data 0x00000028 # 804CC62C => .invalid
# region @ 804CC658 (4 bytes)
.data 0x804CC658 # address
.data 0x00000004 # size
.data 0x00000032 # 804CC658 => .invalid
# region @ 804CC684 (4 bytes)
.data 0x804CC684 # address
.data 0x00000004 # size
.data 0x0000003C # 804CC684 => .invalid
# region @ 804CC694 (4 bytes)
.data 0x804CC694 # address
.data 0x00000004 # size
.data 0x0018003C # 804CC694 => .invalid
# region @ 804CC8EC (4 bytes)
.data 0x804CC8EC # address
.data 0x00000004 # size
.data 0x00000028 # 804CC8EC => .invalid
# region @ 804D1248 (4 bytes)
.data 0x804D1248 # address
.data 0x00000004 # size
.data 0xFF0074EE # 804D1248 => fsel f24, f0, f14, f19
# region @ 805D6CF4 (4 bytes)
.data 0x805D6CF4 # address
.data 0x00000004 # size
.data 0x435C0000 # 805D6CF4 => bc 26, 28, +0x00000000 /* 805D6CF4 */
# region @ 805D8990 (4 bytes)
.data 0x805D8990 # address
.data 0x00000004 # size
.data 0x46AFC800 # 805D8990 => .invalid sc
# region @ 805D8C30 (4 bytes)
.data 0x805D8C30 # address
.data 0x00000004 # size
.data 0x43480000 # 805D8C30 => bc 26, 8, +0x00000000 /* 805D8C30 */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,89 @@
start:
mflr r7
# If this patch has already been run, then the opcode that led here will
# not be bctrl (4E800421). In that case, do nothing.
lis r3, 0x4E80
ori r3, r3, 0x0421
lwz r4, [r7 - 4]
cmp r3, r4
beq apply_patch
blr
apply_patch:
bl patch_end
.offsetof patch
.offsetof patch_end
patch:
mfctr r6
mr r3, r6
li r4, 0x7C00
.include FlushCachedCode-GC
mtctr r6
bctr
patch_end:
mflr r4
addi r4, r4, 8
lwz r3, [r4 - 8]
lwz r5, [r4 - 4]
sub r5, r5, r3
# At this point:
# r4 = address of patch label
# r5 = patch size in bytes
# r7 = saved LR
# Find a spot in the interrupt handlers with enough memory for the patch
lis r3, 0x8000
ori r3, r3, 0x0200
sub r3, r3, r5
check_location:
rlwinm r0, r5, 30, 2, 31
mtctr r0 # ctr = patch size in words
subi r8, r3, 4
check_location_next_word:
lwzu r0, [r8 + 4]
cmpwi r0, 0
beq check_location_word_ok
addi r3, r3, 0x0100
rlwinm r0, r3, 0, 16, 31
cmpwi r0, 0x1800
blt check_location
# No suitable location was found - return null
li r3, 0
mtlr r7
blr
check_location_word_ok:
bdnz check_location_next_word
location_ok:
mr r6, r3
# Now:
# r3 = destination location
# r4 = patch src data
# r5 = patch size in bytes
# r6 = destination location
# r7 = saved LR
.include CopyCode-GC
setup_branch:
# Replace the bctrl opcode that led to this call with a bl opcode that
# leads to the copied patch code
subi r3, r7, 4
sub r4, r6, r3
rlwinm r4, r4, 0, 6, 31
oris r4, r4, 0x4800
ori r4, r4, 0x0001
stw [r3], r4
dcbst r0, r3
sync
icbi r0, r3
isync
# Return the address that the patch was copied to
mr r3, r6
mtlr r7
blr
@@ -0,0 +1,4 @@
entry_ptr:
.data 0x8000C274
start:
.include CacheClearFix
@@ -0,0 +1,5 @@
entry_ptr:
reloc0:
.offsetof start
start:
.include CacheClearFix
@@ -0,0 +1,60 @@
start:
mflr r7
# If this patch has already been run, then the opcode that led here will
# not be bctrl (4E800421). In that case, do nothing.
lis r3, 0x4E80
ori r3, r3, 0x0421
lwz r4, [r7 - 4]
cmp r3, r4
beq apply_patch
blr
apply_patch:
bl patch_end
.offsetof patch
.offsetof patch_end
patch:
mfctr r6
mr r3, r6
li r4, 0x7C00
.include FlushCachedCode
mtctr r6
bctr
patch_end:
mflr r4
addi r4, r4, 8
lwz r3, [r4 - 8]
lwz r5, [r4 - 4]
sub r5, r5, r3
lis r3, 0x8000
ori r3, r3, 0x01BC
mr r6, r3
# At this point:
# r3 = destination location (overwritten by CopyCode)
# r4 = patch src data (overwritten by CopyCode)
# r5 = patch size in bytes (overwritten by CopyCode)
# r6 = destination location
# r7 = saved LR
.include CopyCode
setup_branch:
# Replace the bctrl opcode that led to this call with a bl opcode that
# leads to the copied patch code
subi r3, r7, 4
sub r4, r6, r3
rlwinm r4, r4, 0, 6, 31
oris r4, r4, 0x4800
ori r4, r4, 0x0001
stw [r3], r4
dcbst r0, r3
sync
icbi r0, r3
isync
# Return the address that the patch was copied to
mr r3, r6
mtlr r7
blr
@@ -0,0 +1,30 @@
.meta name="Chat"
.meta description="Enable extended\nWord Select and\nstop the Log Window\nfrom scrolling with L+R"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000D6A0 (28 bytes)
.data 0x8000D6A0 # address
.data 0x0000001C # size
.data 0x3C608051 # 8000D6A0 => lis r3, 0x8051
.data 0xA06393B0 # 8000D6A4 => lhz r3, [r3 - 0x6C50]
.data 0x70600003 # 8000D6A8 => andi. r0, r3, 0x0003
.data 0x28000003 # 8000D6AC => cmplwi r0, 3
.data 0x41820008 # 8000D6B0 => beq +0x00000008 /* 8000D6B8 */
.data 0xD03C0084 # 8000D6B4 => stfs [r28 + 0x0084], f1
.data 0x4825B1C0 # 8000D6B8 => b +0x0025B1C0 /* 80268878 */
# region @ 80268874 (4 bytes)
.data 0x80268874 # address
.data 0x00000004 # size
.data 0x4BDA4E2C # 80268874 => b -0x0025B1D4 /* 8000D6A0 */
# region @ 8034525C (4 bytes)
.data 0x8034525C # address
.data 0x00000004 # size
.data 0x38600000 # 8034525C => li r3, 0x0000
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,30 @@
.meta name="Chat"
.meta description="Enable extended\nWord Select and\nstop the Log Window\nfrom scrolling with L+R"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000D6A0 (28 bytes)
.data 0x8000D6A0 # address
.data 0x0000001C # size
.data 0x3C608051 # 8000D6A0 => lis r3, 0x8051
.data 0xA0639890 # 8000D6A4 => lhz r3, [r3 - 0x6770]
.data 0x70600003 # 8000D6A8 => andi. r0, r3, 0x0003
.data 0x28000003 # 8000D6AC => cmplwi r0, 3
.data 0x41820008 # 8000D6B0 => beq +0x00000008 /* 8000D6B8 */
.data 0xD03C0084 # 8000D6B4 => stfs [r28 + 0x0084], f1
.data 0x4825B1C0 # 8000D6B8 => b +0x0025B1C0 /* 80268878 */
# region @ 80268874 (4 bytes)
.data 0x80268874 # address
.data 0x00000004 # size
.data 0x4BDA4E2C # 80268874 => b -0x0025B1D4 /* 8000D6A0 */
# region @ 803452A0 (4 bytes)
.data 0x803452A0 # address
.data 0x00000004 # size
.data 0x38600000 # 803452A0 => li r3, 0x0000
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,30 @@
.meta name="Chat"
.meta description="Enable extended\nWord Select and\nstop the Log Window\nfrom scrolling with L+R"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000D6A0 (28 bytes)
.data 0x8000D6A0 # address
.data 0x0000001C # size
.data 0x3C608051 # 8000D6A0 => lis r3, 0x8051
.data 0xA063E270 # 8000D6A4 => lhz r3, [r3 - 0x1D90]
.data 0x70600003 # 8000D6A8 => andi. r0, r3, 0x0003
.data 0x28000003 # 8000D6AC => cmplwi r0, 3
.data 0x41820008 # 8000D6B0 => beq +0x00000008 /* 8000D6B8 */
.data 0xD03C0084 # 8000D6B4 => stfs [r28 + 0x0084], f1
.data 0x4825C594 # 8000D6B8 => b +0x0025C594 /* 80269C4C */
# region @ 80269C48 (4 bytes)
.data 0x80269C48 # address
.data 0x00000004 # size
.data 0x4BDA3A58 # 80269C48 => b -0x0025C5A8 /* 8000D6A0 */
# region @ 80346E4C (4 bytes)
.data 0x80346E4C # address
.data 0x00000004 # size
.data 0x38600000 # 80346E4C => li r3, 0x0000
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,30 @@
.meta name="Chat"
.meta description="Enable extended\nWord Select and\nstop the Log Window\nfrom scrolling with L+R"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000D6A0 (28 bytes)
.data 0x8000D6A0 # address
.data 0x0000001C # size
.data 0x3C608051 # 8000D6A0 => lis r3, 0x8051
.data 0xA0638AD0 # 8000D6A4 => lhz r3, [r3 - 0x7530]
.data 0x70600003 # 8000D6A8 => andi. r0, r3, 0x0003
.data 0x28000003 # 8000D6AC => cmplwi r0, 3
.data 0x41820008 # 8000D6B0 => beq +0x00000008 /* 8000D6B8 */
.data 0xD03C0084 # 8000D6B4 => stfs [r28 + 0x0084], f1
.data 0x4825A814 # 8000D6B8 => b +0x0025A814 /* 80267ECC */
# region @ 80267EC8 (4 bytes)
.data 0x80267EC8 # address
.data 0x00000004 # size
.data 0x4BDA57D8 # 80267EC8 => b -0x0025A828 /* 8000D6A0 */
# region @ 8034445C (4 bytes)
.data 0x8034445C # address
.data 0x00000004 # size
.data 0x38600000 # 8034445C => li r3, 0x0000
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,30 @@
.meta name="Chat"
.meta description="Enable extended\nWord Select and\nstop the Log Window\nfrom scrolling with L+R"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000D6A0 (28 bytes)
.data 0x8000D6A0 # address
.data 0x0000001C # size
.data 0x3C608051 # 8000D6A0 => lis r3, 0x8051
.data 0xA063C590 # 8000D6A4 => lhz r3, [r3 - 0x3A70]
.data 0x70600003 # 8000D6A8 => andi. r0, r3, 0x0003
.data 0x28000003 # 8000D6AC => cmplwi r0, 3
.data 0x41820008 # 8000D6B0 => beq +0x00000008 /* 8000D6B8 */
.data 0xD03C0084 # 8000D6B4 => stfs [r28 + 0x0084], f1
.data 0x4825B4C0 # 8000D6B8 => b +0x0025B4C0 /* 80268B78 */
# region @ 80268B74 (4 bytes)
.data 0x80268B74 # address
.data 0x00000004 # size
.data 0x4BDA4B2C # 80268B74 => b -0x0025B4D4 /* 8000D6A0 */
# region @ 803457AC (4 bytes)
.data 0x803457AC # address
.data 0x00000004 # size
.data 0x38600000 # 803457AC => li r3, 0x0000
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,30 @@
.meta name="Chat"
.meta description="Enable extended\nWord Select and\nstop the Log Window\nfrom scrolling with L+R"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000D6A0 (28 bytes)
.data 0x8000D6A0 # address
.data 0x0000001C # size
.data 0x3C608051 # 8000D6A0 => lis r3, 0x8051
.data 0xA063EBD0 # 8000D6A4 => lhz r3, [r3 - 0x1430]
.data 0x70600003 # 8000D6A8 => andi. r0, r3, 0x0003
.data 0x28000003 # 8000D6AC => cmplwi r0, 3
.data 0x41820008 # 8000D6B0 => beq +0x00000008 /* 8000D6B8 */
.data 0xD03C0084 # 8000D6B4 => stfs [r28 + 0x0084], f1
.data 0x4825C51C # 8000D6B8 => b +0x0025C51C /* 80269BD4 */
# region @ 80269BD0 (4 bytes)
.data 0x80269BD0 # address
.data 0x00000004 # size
.data 0x4BDA3AD0 # 80269BD0 => b -0x0025C530 /* 8000D6A0 */
# region @ 80346CCC (4 bytes)
.data 0x80346CCC # address
.data 0x00000004 # size
.data 0x38600000 # 80346CCC => li r3, 0x0000
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,30 @@
.meta name="Chat"
.meta description="Enable extended\nWord Select and\nstop the Log Window\nfrom scrolling with L+R"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000D6A0 (28 bytes)
.data 0x8000D6A0 # address
.data 0x0000001C # size
.data 0x3C608051 # 8000D6A0 => lis r3, 0x8051
.data 0xA063E970 # 8000D6A4 => lhz r3, [r3 - 0x1690]
.data 0x70600003 # 8000D6A8 => andi. r0, r3, 0x0003
.data 0x28000003 # 8000D6AC => cmplwi r0, 3
.data 0x41820008 # 8000D6B0 => beq +0x00000008 /* 8000D6B8 */
.data 0xD03C0084 # 8000D6B4 => stfs [r28 + 0x0084], f1
.data 0x4825C2D0 # 8000D6B8 => b +0x0025C2D0 /* 80269988 */
# region @ 80269984 (4 bytes)
.data 0x80269984 # address
.data 0x00000004 # size
.data 0x4BDA3D1C # 80269984 => b -0x0025C2E4 /* 8000D6A0 */
# region @ 80346A80 (4 bytes)
.data 0x80346A80 # address
.data 0x00000004 # size
.data 0x38600000 # 80346A80 => li r3, 0x0000
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,30 @@
.meta name="Chat"
.meta description="Enable extended\nWord Select and\nstop the Log Window\nfrom scrolling with L+R"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000D6A0 (28 bytes)
.data 0x8000D6A0 # address
.data 0x0000001C # size
.data 0x3C608051 # 8000D6A0 => lis r3, 0x8051
.data 0xA063F290 # 8000D6A4 => lhz r3, [r3 - 0x0D70]
.data 0x70600003 # 8000D6A8 => andi. r0, r3, 0x0003
.data 0x28000003 # 8000D6AC => cmplwi r0, 3
.data 0x41820008 # 8000D6B0 => beq +0x00000008 /* 8000D6B8 */
.data 0xD03C0084 # 8000D6B4 => stfs [r28 + 0x0084], f1
.data 0x4825BDDC # 8000D6B8 => b +0x0025BDDC /* 80269494 */
# region @ 80269490 (4 bytes)
.data 0x80269490 # address
.data 0x00000004 # size
.data 0x4BDA4210 # 80269490 => b -0x0025BDF0 /* 8000D6A0 */
# region @ 8034627C (4 bytes)
.data 0x8034627C # address
.data 0x00000004 # size
.data 0x38600000 # 8034627C => li r3, 0x0000
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,74 @@
.meta name="Common bank"
.meta description="Hold L and open\nthe bank to use a\ncommon bank stored\nin temp character\n3's data"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000BAB4 (156 bytes)
.data 0x8000BAB4 # address
.data 0x0000009C # size
.data 0x281B0002 # 8000BAB4 => cmplwi r27, 2
.data 0x40820018 # 8000BAB8 => bne +0x00000018 /* 8000BAD0 */
.data 0x3C008000 # 8000BABC => lis r0, 0x8000
.data 0x6000BAD8 # 8000BAC0 => ori r0, r0, 0xBAD8
.data 0x90030004 # 8000BAC4 => stw [r3 + 0x0004], r0
.data 0x38000000 # 8000BAC8 => li r0, 0x0000
.data 0x90030008 # 8000BACC => stw [r3 + 0x0008], r0
.data 0x807F0040 # 8000BAD0 => lwz r3, [r31 + 0x0040]
.data 0x4E800020 # 8000BAD4 => blr
.data 0x434F4D4D # 8000BAD8 => bdzl cr3, +0x00004D4C /* 80010824 */
.data 0x4F4E2042 # 8000BADC => crnor crb26, crb14, crb4
.data 0x414E4B00 # 8000BAE0 => bc 10, 14, +0x00004B00 /* 800105E0 */
.data 0x800D8EB8 # 8000BAE4 => lwz r0, [r13 - 0x7148]
.data 0x28000001 # 8000BAE8 => cmplwi r0, 1
.data 0x40820040 # 8000BAEC => bne +0x00000040 /* 8000BB2C */
.data 0x3C808051 # 8000BAF0 => lis r4, 0x8051
.data 0xA08493B0 # 8000BAF4 => lhz r4, [r4 - 0x6C50]
.data 0x70800002 # 8000BAF8 => andi. r0, r4, 0x0002
.data 0x41820028 # 8000BAFC => beq +0x00000028 /* 8000BB24 */
.data 0x800DB954 # 8000BB00 => lwz r0, [r13 - 0x46AC]
.data 0x28000006 # 8000BB04 => cmplwi r0, 6
.data 0x4182001C # 8000BB08 => beq +0x0000001C /* 8000BB24 */
.data 0x806DB938 # 8000BB0C => lwz r3, [r13 - 0x46C8]
.data 0x28030000 # 8000BB10 => cmplwi r3, 0
.data 0x41820010 # 8000BB14 => beq +0x00000010 /* 8000BB24 */
.data 0x38000000 # 8000BB18 => li r0, 0x0000
.data 0x6000F1B0 # 8000BB1C => ori r0, r0, 0xF1B0
.data 0x7C630214 # 8000BB20 => add r3, r3, r0
.data 0x3C808001 # 8000BB24 => lis r4, 0x8001
.data 0x9064C32C # 8000BB28 => stw [r4 - 0x3CD4], r3
.data 0x28030000 # 8000BB2C => cmplwi r3, 0
.data 0x482047B4 # 8000BB30 => b +0x002047B4 /* 802102E4 */
.data 0x800D8EB8 # 8000BB34 => lwz r0, [r13 - 0x7148]
.data 0x28000001 # 8000BB38 => cmplwi r0, 1
.data 0x4082000C # 8000BB3C => bne +0x0000000C /* 8000BB48 */
.data 0x3C608001 # 8000BB40 => lis r3, 0x8001
.data 0x8063C32C # 8000BB44 => lwz r3, [r3 - 0x3CD4]
.data 0x7C681B79 # 8000BB48 => mr. r8, r3
.data 0x48204724 # 8000BB4C => b +0x00204724 /* 80210270 */
# region @ 8021026C (4 bytes)
.data 0x8021026C # address
.data 0x00000004 # size
.data 0x4BDFB8C8 # 8021026C => b -0x00204738 /* 8000BB34 */
# region @ 802102E0 (4 bytes)
.data 0x802102E0 # address
.data 0x00000004 # size
.data 0x4BDFB804 # 802102E0 => b -0x002047FC /* 8000BAE4 */
# region @ 8030B414 (4 bytes)
.data 0x8030B414 # address
.data 0x00000004 # size
.data 0x4BD006A1 # 8030B414 => bl -0x002FF960 /* 8000BAB4 */
# region @ 8030B46C (4 bytes)
.data 0x8030B46C # address
.data 0x00000004 # size
.data 0x4BD00649 # 8030B46C => bl -0x002FF9B8 /* 8000BAB4 */
# region @ 8046DC5C (4 bytes)
.data 0x8046DC5C # address
.data 0x00000004 # size
.data 0xFFFFFFFF # 8046DC5C => fnmadd. f31, f31, f31, f31
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,74 @@
.meta name="Common bank"
.meta description="Hold L and open\nthe bank to use a\ncommon bank stored\nin temp character\n3's data"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000BAB4 (156 bytes)
.data 0x8000BAB4 # address
.data 0x0000009C # size
.data 0x281B0002 # 8000BAB4 => cmplwi r27, 2
.data 0x40820018 # 8000BAB8 => bne +0x00000018 /* 8000BAD0 */
.data 0x3C008000 # 8000BABC => lis r0, 0x8000
.data 0x6000BAD8 # 8000BAC0 => ori r0, r0, 0xBAD8
.data 0x90030004 # 8000BAC4 => stw [r3 + 0x0004], r0
.data 0x38000000 # 8000BAC8 => li r0, 0x0000
.data 0x90030008 # 8000BACC => stw [r3 + 0x0008], r0
.data 0x807F0040 # 8000BAD0 => lwz r3, [r31 + 0x0040]
.data 0x4E800020 # 8000BAD4 => blr
.data 0x434F4D4D # 8000BAD8 => bdzl cr3, +0x00004D4C /* 80010824 */
.data 0x4F4E2042 # 8000BADC => crnor crb26, crb14, crb4
.data 0x414E4B00 # 8000BAE0 => bc 10, 14, +0x00004B00 /* 800105E0 */
.data 0x800D8EB8 # 8000BAE4 => lwz r0, [r13 - 0x7148]
.data 0x28000001 # 8000BAE8 => cmplwi r0, 1
.data 0x40820040 # 8000BAEC => bne +0x00000040 /* 8000BB2C */
.data 0x3C808051 # 8000BAF0 => lis r4, 0x8051
.data 0xA0849890 # 8000BAF4 => lhz r4, [r4 - 0x6770]
.data 0x70800002 # 8000BAF8 => andi. r0, r4, 0x0002
.data 0x41820028 # 8000BAFC => beq +0x00000028 /* 8000BB24 */
.data 0x800DB954 # 8000BB00 => lwz r0, [r13 - 0x46AC]
.data 0x28000006 # 8000BB04 => cmplwi r0, 6
.data 0x4182001C # 8000BB08 => beq +0x0000001C /* 8000BB24 */
.data 0x806DB938 # 8000BB0C => lwz r3, [r13 - 0x46C8]
.data 0x28030000 # 8000BB10 => cmplwi r3, 0
.data 0x41820010 # 8000BB14 => beq +0x00000010 /* 8000BB24 */
.data 0x38000000 # 8000BB18 => li r0, 0x0000
.data 0x6000F1B0 # 8000BB1C => ori r0, r0, 0xF1B0
.data 0x7C630214 # 8000BB20 => add r3, r3, r0
.data 0x3C808001 # 8000BB24 => lis r4, 0x8001
.data 0x9064C32C # 8000BB28 => stw [r4 - 0x3CD4], r3
.data 0x28030000 # 8000BB2C => cmplwi r3, 0
.data 0x482047B4 # 8000BB30 => b +0x002047B4 /* 802102E4 */
.data 0x800D8EB8 # 8000BB34 => lwz r0, [r13 - 0x7148]
.data 0x28000001 # 8000BB38 => cmplwi r0, 1
.data 0x4082000C # 8000BB3C => bne +0x0000000C /* 8000BB48 */
.data 0x3C608001 # 8000BB40 => lis r3, 0x8001
.data 0x8063C32C # 8000BB44 => lwz r3, [r3 - 0x3CD4]
.data 0x7C681B79 # 8000BB48 => mr. r8, r3
.data 0x48204724 # 8000BB4C => b +0x00204724 /* 80210270 */
# region @ 8021026C (4 bytes)
.data 0x8021026C # address
.data 0x00000004 # size
.data 0x4BDFB8C8 # 8021026C => b -0x00204738 /* 8000BB34 */
# region @ 802102E0 (4 bytes)
.data 0x802102E0 # address
.data 0x00000004 # size
.data 0x4BDFB804 # 802102E0 => b -0x002047FC /* 8000BAE4 */
# region @ 8030B458 (4 bytes)
.data 0x8030B458 # address
.data 0x00000004 # size
.data 0x4BD0065D # 8030B458 => bl -0x002FF9A4 /* 8000BAB4 */
# region @ 8030B4B0 (4 bytes)
.data 0x8030B4B0 # address
.data 0x00000004 # size
.data 0x4BD00605 # 8030B4B0 => bl -0x002FF9FC /* 8000BAB4 */
# region @ 8046E0DC (4 bytes)
.data 0x8046E0DC # address
.data 0x00000004 # size
.data 0xFFFFFFFF # 8046E0DC => fnmadd. f31, f31, f31, f31
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,74 @@
.meta name="Common bank"
.meta description="Hold L and open\nthe bank to use a\ncommon bank stored\nin temp character\n3's data"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000BAB4 (156 bytes)
.data 0x8000BAB4 # address
.data 0x0000009C # size
.data 0x281B0002 # 8000BAB4 => cmplwi r27, 2
.data 0x40820018 # 8000BAB8 => bne +0x00000018 /* 8000BAD0 */
.data 0x3C008000 # 8000BABC => lis r0, 0x8000
.data 0x6000BAD8 # 8000BAC0 => ori r0, r0, 0xBAD8
.data 0x90030004 # 8000BAC4 => stw [r3 + 0x0004], r0
.data 0x38000000 # 8000BAC8 => li r0, 0x0000
.data 0x90030008 # 8000BACC => stw [r3 + 0x0008], r0
.data 0x807F0040 # 8000BAD0 => lwz r3, [r31 + 0x0040]
.data 0x4E800020 # 8000BAD4 => blr
.data 0x434F4D4D # 8000BAD8 => bdzl cr3, +0x00004D4C /* 80010824 */
.data 0x4F4E2042 # 8000BADC => crnor crb26, crb14, crb4
.data 0x414E4B00 # 8000BAE0 => bc 10, 14, +0x00004B00 /* 800105E0 */
.data 0x800D8EB8 # 8000BAE4 => lwz r0, [r13 - 0x7148]
.data 0x28000001 # 8000BAE8 => cmplwi r0, 1
.data 0x40820040 # 8000BAEC => bne +0x00000040 /* 8000BB2C */
.data 0x3C808051 # 8000BAF0 => lis r4, 0x8051
.data 0xA084E270 # 8000BAF4 => lhz r4, [r4 - 0x1D90]
.data 0x70800002 # 8000BAF8 => andi. r0, r4, 0x0002
.data 0x41820028 # 8000BAFC => beq +0x00000028 /* 8000BB24 */
.data 0x800DB974 # 8000BB00 => lwz r0, [r13 - 0x468C]
.data 0x28000006 # 8000BB04 => cmplwi r0, 6
.data 0x4182001C # 8000BB08 => beq +0x0000001C /* 8000BB24 */
.data 0x806DB958 # 8000BB0C => lwz r3, [r13 - 0x46A8]
.data 0x28030000 # 8000BB10 => cmplwi r3, 0
.data 0x41820010 # 8000BB14 => beq +0x00000010 /* 8000BB24 */
.data 0x38000000 # 8000BB18 => li r0, 0x0000
.data 0x6000F1B0 # 8000BB1C => ori r0, r0, 0xF1B0
.data 0x7C630214 # 8000BB20 => add r3, r3, r0
.data 0x3C808001 # 8000BB24 => lis r4, 0x8001
.data 0x9064C32C # 8000BB28 => stw [r4 - 0x3CD4], r3
.data 0x28030000 # 8000BB2C => cmplwi r3, 0
.data 0x48205704 # 8000BB30 => b +0x00205704 /* 80211234 */
.data 0x800D8EB8 # 8000BB34 => lwz r0, [r13 - 0x7148]
.data 0x28000001 # 8000BB38 => cmplwi r0, 1
.data 0x4082000C # 8000BB3C => bne +0x0000000C /* 8000BB48 */
.data 0x3C608001 # 8000BB40 => lis r3, 0x8001
.data 0x8063C32C # 8000BB44 => lwz r3, [r3 - 0x3CD4]
.data 0x7C681B79 # 8000BB48 => mr. r8, r3
.data 0x48205674 # 8000BB4C => b +0x00205674 /* 802111C0 */
# region @ 802111BC (4 bytes)
.data 0x802111BC # address
.data 0x00000004 # size
.data 0x4BDFA978 # 802111BC => b -0x00205688 /* 8000BB34 */
# region @ 80211230 (4 bytes)
.data 0x80211230 # address
.data 0x00000004 # size
.data 0x4BDFA8B4 # 80211230 => b -0x0020574C /* 8000BAE4 */
# region @ 8030CE60 (4 bytes)
.data 0x8030CE60 # address
.data 0x00000004 # size
.data 0x4BCFEC55 # 8030CE60 => bl -0x003013AC /* 8000BAB4 */
# region @ 8030CEB8 (4 bytes)
.data 0x8030CEB8 # address
.data 0x00000004 # size
.data 0x4BCFEBFD # 8030CEB8 => bl -0x00301404 /* 8000BAB4 */
# region @ 80471ACC (4 bytes)
.data 0x80471ACC # address
.data 0x00000004 # size
.data 0xFFFFFFFF # 80471ACC => fnmadd. f31, f31, f31, f31
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,74 @@
.meta name="Common bank"
.meta description="Hold L and open\nthe bank to use a\ncommon bank stored\nin temp character\n3's data"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000BAB4 (156 bytes)
.data 0x8000BAB4 # address
.data 0x0000009C # size
.data 0x281B0002 # 8000BAB4 => cmplwi r27, 2
.data 0x40820018 # 8000BAB8 => bne +0x00000018 /* 8000BAD0 */
.data 0x3C008000 # 8000BABC => lis r0, 0x8000
.data 0x6000BAD8 # 8000BAC0 => ori r0, r0, 0xBAD8
.data 0x90030004 # 8000BAC4 => stw [r3 + 0x0004], r0
.data 0x38000000 # 8000BAC8 => li r0, 0x0000
.data 0x90030008 # 8000BACC => stw [r3 + 0x0008], r0
.data 0x807F0040 # 8000BAD0 => lwz r3, [r31 + 0x0040]
.data 0x4E800020 # 8000BAD4 => blr
.data 0x434F4D4D # 8000BAD8 => bdzl cr3, +0x00004D4C /* 80010824 */
.data 0x4F4E2042 # 8000BADC => crnor crb26, crb14, crb4
.data 0x414E4B00 # 8000BAE0 => bc 10, 14, +0x00004B00 /* 800105E0 */
.data 0x800D8EB0 # 8000BAE4 => lwz r0, [r13 - 0x7150]
.data 0x28000001 # 8000BAE8 => cmplwi r0, 1
.data 0x40820040 # 8000BAEC => bne +0x00000040 /* 8000BB2C */
.data 0x3C808051 # 8000BAF0 => lis r4, 0x8051
.data 0xA0848AD0 # 8000BAF4 => lhz r4, [r4 - 0x7530]
.data 0x70800002 # 8000BAF8 => andi. r0, r4, 0x0002
.data 0x41820028 # 8000BAFC => beq +0x00000028 /* 8000BB24 */
.data 0x800DB93C # 8000BB00 => lwz r0, [r13 - 0x46C4]
.data 0x28000006 # 8000BB04 => cmplwi r0, 6
.data 0x4182001C # 8000BB08 => beq +0x0000001C /* 8000BB24 */
.data 0x806DB920 # 8000BB0C => lwz r3, [r13 - 0x46E0]
.data 0x28030000 # 8000BB10 => cmplwi r3, 0
.data 0x41820010 # 8000BB14 => beq +0x00000010 /* 8000BB24 */
.data 0x38000000 # 8000BB18 => li r0, 0x0000
.data 0x6000F1B0 # 8000BB1C => ori r0, r0, 0xF1B0
.data 0x7C630214 # 8000BB20 => add r3, r3, r0
.data 0x3C808001 # 8000BB24 => lis r4, 0x8001
.data 0x9064C32C # 8000BB28 => stw [r4 - 0x3CD4], r3
.data 0x28030000 # 8000BB2C => cmplwi r3, 0
.data 0x48203FB8 # 8000BB30 => b +0x00203FB8 /* 8020FAE8 */
.data 0x800D8EB0 # 8000BB34 => lwz r0, [r13 - 0x7150]
.data 0x28000001 # 8000BB38 => cmplwi r0, 1
.data 0x4082000C # 8000BB3C => bne +0x0000000C /* 8000BB48 */
.data 0x3C608001 # 8000BB40 => lis r3, 0x8001
.data 0x8063C32C # 8000BB44 => lwz r3, [r3 - 0x3CD4]
.data 0x7C681B79 # 8000BB48 => mr. r8, r3
.data 0x48203EB0 # 8000BB4C => b +0x00203EB0 /* 8020F9FC */
# region @ 8020F9F8 (4 bytes)
.data 0x8020F9F8 # address
.data 0x00000004 # size
.data 0x4BDFC13C # 8020F9F8 => b -0x00203EC4 /* 8000BB34 */
# region @ 8020FAE4 (4 bytes)
.data 0x8020FAE4 # address
.data 0x00000004 # size
.data 0x4BDFC000 # 8020FAE4 => b -0x00204000 /* 8000BAE4 */
# region @ 8030AA54 (4 bytes)
.data 0x8030AA54 # address
.data 0x00000004 # size
.data 0x4BD01061 # 8030AA54 => bl -0x002FEFA0 /* 8000BAB4 */
# region @ 8030AAAC (4 bytes)
.data 0x8030AAAC # address
.data 0x00000004 # size
.data 0x4BD01009 # 8030AAAC => bl -0x002FEFF8 /* 8000BAB4 */
# region @ 8046CECC (4 bytes)
.data 0x8046CECC # address
.data 0x00000004 # size
.data 0xFFFFFFFF # 8046CECC => fnmadd. f31, f31, f31, f31
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,74 @@
.meta name="Common bank"
.meta description="Hold L and open\nthe bank to use a\ncommon bank stored\nin temp character\n3's data"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000BAB4 (156 bytes)
.data 0x8000BAB4 # address
.data 0x0000009C # size
.data 0x281B0002 # 8000BAB4 => cmplwi r27, 2
.data 0x40820018 # 8000BAB8 => bne +0x00000018 /* 8000BAD0 */
.data 0x3C008000 # 8000BABC => lis r0, 0x8000
.data 0x6000BAD8 # 8000BAC0 => ori r0, r0, 0xBAD8
.data 0x90030004 # 8000BAC4 => stw [r3 + 0x0004], r0
.data 0x38000000 # 8000BAC8 => li r0, 0x0000
.data 0x90030008 # 8000BACC => stw [r3 + 0x0008], r0
.data 0x807F0040 # 8000BAD0 => lwz r3, [r31 + 0x0040]
.data 0x4E800020 # 8000BAD4 => blr
.data 0x434F4D4D # 8000BAD8 => bdzl cr3, +0x00004D4C /* 80010824 */
.data 0x4F4E2042 # 8000BADC => crnor crb26, crb14, crb4
.data 0x414E4B00 # 8000BAE0 => bc 10, 14, +0x00004B00 /* 800105E0 */
.data 0x800D8EB0 # 8000BAE4 => lwz r0, [r13 - 0x7150]
.data 0x28000001 # 8000BAE8 => cmplwi r0, 1
.data 0x40820040 # 8000BAEC => bne +0x00000040 /* 8000BB2C */
.data 0x3C808051 # 8000BAF0 => lis r4, 0x8051
.data 0xA084C590 # 8000BAF4 => lhz r4, [r4 - 0x3A70]
.data 0x70800002 # 8000BAF8 => andi. r0, r4, 0x0002
.data 0x41820028 # 8000BAFC => beq +0x00000028 /* 8000BB24 */
.data 0x800DB944 # 8000BB00 => lwz r0, [r13 - 0x46BC]
.data 0x28000006 # 8000BB04 => cmplwi r0, 6
.data 0x4182001C # 8000BB08 => beq +0x0000001C /* 8000BB24 */
.data 0x806DB928 # 8000BB0C => lwz r3, [r13 - 0x46D8]
.data 0x28030000 # 8000BB10 => cmplwi r3, 0
.data 0x41820010 # 8000BB14 => beq +0x00000010 /* 8000BB24 */
.data 0x38000000 # 8000BB18 => li r0, 0x0000
.data 0x6000F1B0 # 8000BB1C => ori r0, r0, 0xF1B0
.data 0x7C630214 # 8000BB20 => add r3, r3, r0
.data 0x3C808001 # 8000BB24 => lis r4, 0x8001
.data 0x9064C32C # 8000BB28 => stw [r4 - 0x3CD4], r3
.data 0x28030000 # 8000BB2C => cmplwi r3, 0
.data 0x48204894 # 8000BB30 => b +0x00204894 /* 802103C4 */
.data 0x800D8EB0 # 8000BB34 => lwz r0, [r13 - 0x7150]
.data 0x28000001 # 8000BB38 => cmplwi r0, 1
.data 0x4082000C # 8000BB3C => bne +0x0000000C /* 8000BB48 */
.data 0x3C608001 # 8000BB40 => lis r3, 0x8001
.data 0x8063C32C # 8000BB44 => lwz r3, [r3 - 0x3CD4]
.data 0x7C681B79 # 8000BB48 => mr. r8, r3
.data 0x48204804 # 8000BB4C => b +0x00204804 /* 80210350 */
# region @ 8021034C (4 bytes)
.data 0x8021034C # address
.data 0x00000004 # size
.data 0x4BDFB7E8 # 8021034C => b -0x00204818 /* 8000BB34 */
# region @ 802103C0 (4 bytes)
.data 0x802103C0 # address
.data 0x00000004 # size
.data 0x4BDFB724 # 802103C0 => b -0x002048DC /* 8000BAE4 */
# region @ 8030BAA4 (4 bytes)
.data 0x8030BAA4 # address
.data 0x00000004 # size
.data 0x4BD00011 # 8030BAA4 => bl -0x002FFFF0 /* 8000BAB4 */
# region @ 8030BAFC (4 bytes)
.data 0x8030BAFC # address
.data 0x00000004 # size
.data 0x4BCFFFB9 # 8030BAFC => bl -0x00300048 /* 8000BAB4 */
# region @ 8046FCEC (4 bytes)
.data 0x8046FCEC # address
.data 0x00000004 # size
.data 0xFFFFFFFF # 8046FCEC => fnmadd. f31, f31, f31, f31
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,74 @@
.meta name="Common bank"
.meta description="Hold L and open\nthe bank to use a\ncommon bank stored\nin temp character\n3's data"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000BAB4 (156 bytes)
.data 0x8000BAB4 # address
.data 0x0000009C # size
.data 0x281B0002 # 8000BAB4 => cmplwi r27, 2
.data 0x40820018 # 8000BAB8 => bne +0x00000018 /* 8000BAD0 */
.data 0x3C008000 # 8000BABC => lis r0, 0x8000
.data 0x6000BAD8 # 8000BAC0 => ori r0, r0, 0xBAD8
.data 0x90030004 # 8000BAC4 => stw [r3 + 0x0004], r0
.data 0x38000000 # 8000BAC8 => li r0, 0x0000
.data 0x90030008 # 8000BACC => stw [r3 + 0x0008], r0
.data 0x807F0040 # 8000BAD0 => lwz r3, [r31 + 0x0040]
.data 0x4E800020 # 8000BAD4 => blr
.data 0x434F4D4D # 8000BAD8 => bdzl cr3, +0x00004D4C /* 80010824 */
.data 0x4F4E2042 # 8000BADC => crnor crb26, crb14, crb4
.data 0x414E4B00 # 8000BAE0 => bc 10, 14, +0x00004B00 /* 800105E0 */
.data 0x800D8EB0 # 8000BAE4 => lwz r0, [r13 - 0x7150]
.data 0x28000001 # 8000BAE8 => cmplwi r0, 1
.data 0x40820040 # 8000BAEC => bne +0x00000040 /* 8000BB2C */
.data 0x3C808051 # 8000BAF0 => lis r4, 0x8051
.data 0xA084EBD0 # 8000BAF4 => lhz r4, [r4 - 0x1430]
.data 0x70800002 # 8000BAF8 => andi. r0, r4, 0x0002
.data 0x41820028 # 8000BAFC => beq +0x00000028 /* 8000BB24 */
.data 0x800DB964 # 8000BB00 => lwz r0, [r13 - 0x469C]
.data 0x28000006 # 8000BB04 => cmplwi r0, 6
.data 0x4182001C # 8000BB08 => beq +0x0000001C /* 8000BB24 */
.data 0x806DB948 # 8000BB0C => lwz r3, [r13 - 0x46B8]
.data 0x28030000 # 8000BB10 => cmplwi r3, 0
.data 0x41820010 # 8000BB14 => beq +0x00000010 /* 8000BB24 */
.data 0x38000000 # 8000BB18 => li r0, 0x0000
.data 0x6000F1B0 # 8000BB1C => ori r0, r0, 0xF1B0
.data 0x7C630214 # 8000BB20 => add r3, r3, r0
.data 0x3C808001 # 8000BB24 => lis r4, 0x8001
.data 0x9064C32C # 8000BB28 => stw [r4 - 0x3CD4], r3
.data 0x28030000 # 8000BB2C => cmplwi r3, 0
.data 0x48205674 # 8000BB30 => b +0x00205674 /* 802111A4 */
.data 0x800D8EB0 # 8000BB34 => lwz r0, [r13 - 0x7150]
.data 0x28000001 # 8000BB38 => cmplwi r0, 1
.data 0x4082000C # 8000BB3C => bne +0x0000000C /* 8000BB48 */
.data 0x3C608001 # 8000BB40 => lis r3, 0x8001
.data 0x8063C32C # 8000BB44 => lwz r3, [r3 - 0x3CD4]
.data 0x7C681B79 # 8000BB48 => mr. r8, r3
.data 0x482055E4 # 8000BB4C => b +0x002055E4 /* 80211130 */
# region @ 8021112C (4 bytes)
.data 0x8021112C # address
.data 0x00000004 # size
.data 0x4BDFAA08 # 8021112C => b -0x002055F8 /* 8000BB34 */
# region @ 802111A0 (4 bytes)
.data 0x802111A0 # address
.data 0x00000004 # size
.data 0x4BDFA944 # 802111A0 => b -0x002056BC /* 8000BAE4 */
# region @ 8030CEF0 (4 bytes)
.data 0x8030CEF0 # address
.data 0x00000004 # size
.data 0x4BCFEBC5 # 8030CEF0 => bl -0x0030143C /* 8000BAB4 */
# region @ 8030CF48 (4 bytes)
.data 0x8030CF48 # address
.data 0x00000004 # size
.data 0x4BCFEB6D # 8030CF48 => bl -0x00301494 /* 8000BAB4 */
# region @ 80471E4C (4 bytes)
.data 0x80471E4C # address
.data 0x00000004 # size
.data 0xFFFFFFFF # 80471E4C => fnmadd. f31, f31, f31, f31
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,74 @@
.meta name="Common bank"
.meta description="Hold L and open\nthe bank to use a\ncommon bank stored\nin temp character\n3's data"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000BAB4 (156 bytes)
.data 0x8000BAB4 # address
.data 0x0000009C # size
.data 0x281B0002 # 8000BAB4 => cmplwi r27, 2
.data 0x40820018 # 8000BAB8 => bne +0x00000018 /* 8000BAD0 */
.data 0x3C008000 # 8000BABC => lis r0, 0x8000
.data 0x6000BAD8 # 8000BAC0 => ori r0, r0, 0xBAD8
.data 0x90030004 # 8000BAC4 => stw [r3 + 0x0004], r0
.data 0x38000000 # 8000BAC8 => li r0, 0x0000
.data 0x90030008 # 8000BACC => stw [r3 + 0x0008], r0
.data 0x807F0040 # 8000BAD0 => lwz r3, [r31 + 0x0040]
.data 0x4E800020 # 8000BAD4 => blr
.data 0x434F4D4D # 8000BAD8 => bdzl cr3, +0x00004D4C /* 80010824 */
.data 0x4F4E2042 # 8000BADC => crnor crb26, crb14, crb4
.data 0x414E4B00 # 8000BAE0 => bc 10, 14, +0x00004B00 /* 800105E0 */
.data 0x800D8EB0 # 8000BAE4 => lwz r0, [r13 - 0x7150]
.data 0x28000001 # 8000BAE8 => cmplwi r0, 1
.data 0x40820040 # 8000BAEC => bne +0x00000040 /* 8000BB2C */
.data 0x3C808051 # 8000BAF0 => lis r4, 0x8051
.data 0xA084E970 # 8000BAF4 => lhz r4, [r4 - 0x1690]
.data 0x70800002 # 8000BAF8 => andi. r0, r4, 0x0002
.data 0x41820028 # 8000BAFC => beq +0x00000028 /* 8000BB24 */
.data 0x800DB964 # 8000BB00 => lwz r0, [r13 - 0x469C]
.data 0x28000006 # 8000BB04 => cmplwi r0, 6
.data 0x4182001C # 8000BB08 => beq +0x0000001C /* 8000BB24 */
.data 0x806DB948 # 8000BB0C => lwz r3, [r13 - 0x46B8]
.data 0x28030000 # 8000BB10 => cmplwi r3, 0
.data 0x41820010 # 8000BB14 => beq +0x00000010 /* 8000BB24 */
.data 0x38000000 # 8000BB18 => li r0, 0x0000
.data 0x6000F1B0 # 8000BB1C => ori r0, r0, 0xF1B0
.data 0x7C630214 # 8000BB20 => add r3, r3, r0
.data 0x3C808001 # 8000BB24 => lis r4, 0x8001
.data 0x9064C32C # 8000BB28 => stw [r4 - 0x3CD4], r3
.data 0x28030000 # 8000BB2C => cmplwi r3, 0
.data 0x482053D0 # 8000BB30 => b +0x002053D0 /* 80210F00 */
.data 0x800D8EB0 # 8000BB34 => lwz r0, [r13 - 0x7150]
.data 0x28000001 # 8000BB38 => cmplwi r0, 1
.data 0x4082000C # 8000BB3C => bne +0x0000000C /* 8000BB48 */
.data 0x3C608001 # 8000BB40 => lis r3, 0x8001
.data 0x8063C32C # 8000BB44 => lwz r3, [r3 - 0x3CD4]
.data 0x7C681B79 # 8000BB48 => mr. r8, r3
.data 0x48205340 # 8000BB4C => b +0x00205340 /* 80210E8C */
# region @ 80210E88 (4 bytes)
.data 0x80210E88 # address
.data 0x00000004 # size
.data 0x4BDFACAC # 80210E88 => b -0x00205354 /* 8000BB34 */
# region @ 80210EFC (4 bytes)
.data 0x80210EFC # address
.data 0x00000004 # size
.data 0x4BDFABE8 # 80210EFC => b -0x00205418 /* 8000BAE4 */
# region @ 8030CCA4 (4 bytes)
.data 0x8030CCA4 # address
.data 0x00000004 # size
.data 0x4BCFEE11 # 8030CCA4 => bl -0x003011F0 /* 8000BAB4 */
# region @ 8030CCFC (4 bytes)
.data 0x8030CCFC # address
.data 0x00000004 # size
.data 0x4BCFEDB9 # 8030CCFC => bl -0x00301248 /* 8000BAB4 */
# region @ 80471C14 (4 bytes)
.data 0x80471C14 # address
.data 0x00000004 # size
.data 0xFFFFFFFF # 80471C14 => fnmadd. f31, f31, f31, f31
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,74 @@
.meta name="Common bank"
.meta description="Hold L and open\nthe bank to use a\ncommon bank stored\nin temp character\n3's data"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000BAB4 (156 bytes)
.data 0x8000BAB4 # address
.data 0x0000009C # size
.data 0x281B0002 # 8000BAB4 => cmplwi r27, 2
.data 0x40820018 # 8000BAB8 => bne +0x00000018 /* 8000BAD0 */
.data 0x3C008000 # 8000BABC => lis r0, 0x8000
.data 0x6000BAD8 # 8000BAC0 => ori r0, r0, 0xBAD8
.data 0x90030004 # 8000BAC4 => stw [r3 + 0x0004], r0
.data 0x38000000 # 8000BAC8 => li r0, 0x0000
.data 0x90030008 # 8000BACC => stw [r3 + 0x0008], r0
.data 0x807F0040 # 8000BAD0 => lwz r3, [r31 + 0x0040]
.data 0x4E800020 # 8000BAD4 => blr
.data 0x434F4D4D # 8000BAD8 => bdzl cr3, +0x00004D4C /* 80010824 */
.data 0x4F4E2042 # 8000BADC => crnor crb26, crb14, crb4
.data 0x414E4B00 # 8000BAE0 => bc 10, 14, +0x00004B00 /* 800105E0 */
.data 0x800D8EB8 # 8000BAE4 => lwz r0, [r13 - 0x7148]
.data 0x28000001 # 8000BAE8 => cmplwi r0, 1
.data 0x40820040 # 8000BAEC => bne +0x00000040 /* 8000BB2C */
.data 0x3C808051 # 8000BAF0 => lis r4, 0x8051
.data 0xA084F290 # 8000BAF4 => lhz r4, [r4 - 0x0D70]
.data 0x70800002 # 8000BAF8 => andi. r0, r4, 0x0002
.data 0x41820028 # 8000BAFC => beq +0x00000028 /* 8000BB24 */
.data 0x800DB9B4 # 8000BB00 => lwz r0, [r13 - 0x464C]
.data 0x28000006 # 8000BB04 => cmplwi r0, 6
.data 0x4182001C # 8000BB08 => beq +0x0000001C /* 8000BB24 */
.data 0x806DB998 # 8000BB0C => lwz r3, [r13 - 0x4668]
.data 0x28030000 # 8000BB10 => cmplwi r3, 0
.data 0x41820010 # 8000BB14 => beq +0x00000010 /* 8000BB24 */
.data 0x38000000 # 8000BB18 => li r0, 0x0000
.data 0x6000F1B0 # 8000BB1C => ori r0, r0, 0xF1B0
.data 0x7C630214 # 8000BB20 => add r3, r3, r0
.data 0x3C808001 # 8000BB24 => lis r4, 0x8001
.data 0x9064C32C # 8000BB28 => stw [r4 - 0x3CD4], r3
.data 0x28030000 # 8000BB2C => cmplwi r3, 0
.data 0x48205100 # 8000BB30 => b +0x00205100 /* 80210C30 */
.data 0x800D8EB8 # 8000BB34 => lwz r0, [r13 - 0x7148]
.data 0x28000001 # 8000BB38 => cmplwi r0, 1
.data 0x4082000C # 8000BB3C => bne +0x0000000C /* 8000BB48 */
.data 0x3C608001 # 8000BB40 => lis r3, 0x8001
.data 0x8063C32C # 8000BB44 => lwz r3, [r3 - 0x3CD4]
.data 0x7C681B79 # 8000BB48 => mr. r8, r3
.data 0x48205070 # 8000BB4C => b +0x00205070 /* 80210BBC */
# region @ 80210BB8 (4 bytes)
.data 0x80210BB8 # address
.data 0x00000004 # size
.data 0x4BDFAF7C # 80210BB8 => b -0x00205084 /* 8000BB34 */
# region @ 80210C2C (4 bytes)
.data 0x80210C2C # address
.data 0x00000004 # size
.data 0x4BDFAEB8 # 80210C2C => b -0x00205148 /* 8000BAE4 */
# region @ 8030C228 (4 bytes)
.data 0x8030C228 # address
.data 0x00000004 # size
.data 0x4BCFF88D # 8030C228 => bl -0x00300774 /* 8000BAB4 */
# region @ 8030C280 (4 bytes)
.data 0x8030C280 # address
.data 0x00000004 # size
.data 0x4BCFF835 # 8030C280 => bl -0x003007CC /* 8000BAB4 */
# region @ 80471804 (4 bytes)
.data 0x80471804 # address
.data 0x00000004 # size
.data 0xFFFFFFFF # 80471804 => fnmadd. f31, f31, f31, f31
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,18 @@
# r3 = dest ptr
# r4 = src ptr
# r5 = size
# Clobbers r0, r3, r4, r5
addi r5, r5, 3
rlwinm r5, r5, 30, 2, 31 # r5 = number of words to copy
mtctr r5
subi r3, r3, 4 # r3 = r3 - 4 (so we can use stwu)
subi r4, r4, 4 # r4 = r4 - 4 (so we can use lwzu)
copy_word_again:
lwzu r0, [r4 + 4]
stwu [r3 + 4], r0
bdnz copy_word_again
rlwinm r4, r5, 2, 0, 29
addi r3, r3, 4
sub r3, r3, r4
.include FlushCachedCode
@@ -0,0 +1,54 @@
.meta name="DC targets"
.meta description="Change the target\nreticle colors to\nthose used on the\nDreamcast"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 802ABDB8 (4 bytes)
.data 0x802ABDB8 # address
.data 0x00000004 # size
.data 0x3C8000FF # 802ABDB8 => lis r4, 0x00FF
# region @ 802ABDCC (4 bytes)
.data 0x802ABDCC # address
.data 0x00000004 # size
.data 0x388000FF # 802ABDCC => li r4, 0x00FF
# region @ 802ABDE0 (4 bytes)
.data 0x802ABDE0 # address
.data 0x00000004 # size
.data 0x3884FF00 # 802ABDE0 => subi r4, r4, 0x0100
# region @ 804A26C8 (8 bytes)
.data 0x804A26C8 # address
.data 0x00000008 # size
.data 0x3F800000 # 804A26C8 => lis r28, 0x0000
.data 0x00000000 # 804A26CC => .invalid
# region @ 804A26D8 (8 bytes)
.data 0x804A26D8 # address
.data 0x00000008 # size
.data 0x3F800000 # 804A26D8 => lis r28, 0x0000
.data 0x00000000 # 804A26DC => .invalid
# region @ 804A26E8 (12 bytes)
.data 0x804A26E8 # address
.data 0x0000000C # size
.data 0x3F800000 # 804A26E8 => lis r28, 0x0000
.data 0x3F800000 # 804A26EC => lis r28, 0x0000
.data 0x00000000 # 804A26F0 => .invalid
# region @ 804A26F8 (4 bytes)
.data 0x804A26F8 # address
.data 0x00000004 # size
.data 0x00000000 # 804A26F8 => .invalid
# region @ 804A2700 (4 bytes)
.data 0x804A2700 # address
.data 0x00000004 # size
.data 0x3F800000 # 804A2700 => lis r28, 0x0000
# region @ 804A2708 (12 bytes)
.data 0x804A2708 # address
.data 0x0000000C # size
.data 0x3ECCCCCD # 804A2708 => subis r22, r12, 0x3333
.data 0x3DCCCCCD # 804A270C => subis r14, r12, 0x3333
.data 0x3DCCCCCD # 804A2710 => subis r14, r12, 0x3333
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,54 @@
.meta name="DC targets"
.meta description="Change the target\nreticle colors to\nthose used on the\nDreamcast"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 802ABDFC (4 bytes)
.data 0x802ABDFC # address
.data 0x00000004 # size
.data 0x3C8000FF # 802ABDFC => lis r4, 0x00FF
# region @ 802ABE10 (4 bytes)
.data 0x802ABE10 # address
.data 0x00000004 # size
.data 0x388000FF # 802ABE10 => li r4, 0x00FF
# region @ 802ABE24 (4 bytes)
.data 0x802ABE24 # address
.data 0x00000004 # size
.data 0x3884FF00 # 802ABE24 => subi r4, r4, 0x0100
# region @ 804A2BA8 (8 bytes)
.data 0x804A2BA8 # address
.data 0x00000008 # size
.data 0x3F800000 # 804A2BA8 => lis r28, 0x0000
.data 0x00000000 # 804A2BAC => .invalid
# region @ 804A2BB8 (8 bytes)
.data 0x804A2BB8 # address
.data 0x00000008 # size
.data 0x3F800000 # 804A2BB8 => lis r28, 0x0000
.data 0x00000000 # 804A2BBC => .invalid
# region @ 804A2BC8 (12 bytes)
.data 0x804A2BC8 # address
.data 0x0000000C # size
.data 0x3F800000 # 804A2BC8 => lis r28, 0x0000
.data 0x3F800000 # 804A2BCC => lis r28, 0x0000
.data 0x00000000 # 804A2BD0 => .invalid
# region @ 804A2BD8 (4 bytes)
.data 0x804A2BD8 # address
.data 0x00000004 # size
.data 0x00000000 # 804A2BD8 => .invalid
# region @ 804A2BE0 (4 bytes)
.data 0x804A2BE0 # address
.data 0x00000004 # size
.data 0x3F800000 # 804A2BE0 => lis r28, 0x0000
# region @ 804A2BE8 (12 bytes)
.data 0x804A2BE8 # address
.data 0x0000000C # size
.data 0x3ECCCCCD # 804A2BE8 => subis r22, r12, 0x3333
.data 0x3DCCCCCD # 804A2BEC => subis r14, r12, 0x3333
.data 0x3DCCCCCD # 804A2BF0 => subis r14, r12, 0x3333
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,54 @@
.meta name="DC targets"
.meta description="Change the target\nreticle colors to\nthose used on the\nDreamcast"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 802AD338 (4 bytes)
.data 0x802AD338 # address
.data 0x00000004 # size
.data 0x3C8000FF # 802AD338 => lis r4, 0x00FF
# region @ 802AD34C (4 bytes)
.data 0x802AD34C # address
.data 0x00000004 # size
.data 0x388000FF # 802AD34C => li r4, 0x00FF
# region @ 802AD360 (4 bytes)
.data 0x802AD360 # address
.data 0x00000004 # size
.data 0x3884FF00 # 802AD360 => subi r4, r4, 0x0100
# region @ 804A7168 (8 bytes)
.data 0x804A7168 # address
.data 0x00000008 # size
.data 0x3F800000 # 804A7168 => lis r28, 0x0000
.data 0x00000000 # 804A716C => .invalid
# region @ 804A7178 (8 bytes)
.data 0x804A7178 # address
.data 0x00000008 # size
.data 0x3F800000 # 804A7178 => lis r28, 0x0000
.data 0x00000000 # 804A717C => .invalid
# region @ 804A7188 (12 bytes)
.data 0x804A7188 # address
.data 0x0000000C # size
.data 0x3F800000 # 804A7188 => lis r28, 0x0000
.data 0x3F800000 # 804A718C => lis r28, 0x0000
.data 0x00000000 # 804A7190 => .invalid
# region @ 804A7198 (4 bytes)
.data 0x804A7198 # address
.data 0x00000004 # size
.data 0x00000000 # 804A7198 => .invalid
# region @ 804A71A0 (4 bytes)
.data 0x804A71A0 # address
.data 0x00000004 # size
.data 0x3F800000 # 804A71A0 => lis r28, 0x0000
# region @ 804A71A8 (12 bytes)
.data 0x804A71A8 # address
.data 0x0000000C # size
.data 0x3ECCCCCD # 804A71A8 => subis r22, r12, 0x3333
.data 0x3DCCCCCD # 804A71AC => subis r14, r12, 0x3333
.data 0x3DCCCCCD # 804A71B0 => subis r14, r12, 0x3333
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,54 @@
.meta name="DC targets"
.meta description="Change the target\nreticle colors to\nthose used on the\nDreamcast"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 802AB3FC (4 bytes)
.data 0x802AB3FC # address
.data 0x00000004 # size
.data 0x3C8000FF # 802AB3FC => lis r4, 0x00FF
# region @ 802AB410 (4 bytes)
.data 0x802AB410 # address
.data 0x00000004 # size
.data 0x388000FF # 802AB410 => li r4, 0x00FF
# region @ 802AB424 (4 bytes)
.data 0x802AB424 # address
.data 0x00000004 # size
.data 0x3884FF00 # 802AB424 => subi r4, r4, 0x0100
# region @ 804A1F18 (8 bytes)
.data 0x804A1F18 # address
.data 0x00000008 # size
.data 0x3F800000 # 804A1F18 => lis r28, 0x0000
.data 0x00000000 # 804A1F1C => .invalid
# region @ 804A1F28 (8 bytes)
.data 0x804A1F28 # address
.data 0x00000008 # size
.data 0x3F800000 # 804A1F28 => lis r28, 0x0000
.data 0x00000000 # 804A1F2C => .invalid
# region @ 804A1F38 (12 bytes)
.data 0x804A1F38 # address
.data 0x0000000C # size
.data 0x3F800000 # 804A1F38 => lis r28, 0x0000
.data 0x3F800000 # 804A1F3C => lis r28, 0x0000
.data 0x00000000 # 804A1F40 => .invalid
# region @ 804A1F48 (4 bytes)
.data 0x804A1F48 # address
.data 0x00000004 # size
.data 0x00000000 # 804A1F48 => .invalid
# region @ 804A1F50 (4 bytes)
.data 0x804A1F50 # address
.data 0x00000004 # size
.data 0x3F800000 # 804A1F50 => lis r28, 0x0000
# region @ 804A1F58 (12 bytes)
.data 0x804A1F58 # address
.data 0x0000000C # size
.data 0x3ECCCCCD # 804A1F58 => subis r22, r12, 0x3333
.data 0x3DCCCCCD # 804A1F5C => subis r14, r12, 0x3333
.data 0x3DCCCCCD # 804A1F60 => subis r14, r12, 0x3333
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,54 @@
.meta name="DC targets"
.meta description="Change the target\nreticle colors to\nthose used on the\nDreamcast"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 802AC2A4 (4 bytes)
.data 0x802AC2A4 # address
.data 0x00000004 # size
.data 0x3C8000FF # 802AC2A4 => lis r4, 0x00FF
# region @ 802AC2B8 (4 bytes)
.data 0x802AC2B8 # address
.data 0x00000004 # size
.data 0x388000FF # 802AC2B8 => li r4, 0x00FF
# region @ 802AC2CC (4 bytes)
.data 0x802AC2CC # address
.data 0x00000004 # size
.data 0x3884FF00 # 802AC2CC => subi r4, r4, 0x0100
# region @ 804A5638 (8 bytes)
.data 0x804A5638 # address
.data 0x00000008 # size
.data 0x3F800000 # 804A5638 => lis r28, 0x0000
.data 0x00000000 # 804A563C => .invalid
# region @ 804A5648 (8 bytes)
.data 0x804A5648 # address
.data 0x00000008 # size
.data 0x3F800000 # 804A5648 => lis r28, 0x0000
.data 0x00000000 # 804A564C => .invalid
# region @ 804A5658 (12 bytes)
.data 0x804A5658 # address
.data 0x0000000C # size
.data 0x3F800000 # 804A5658 => lis r28, 0x0000
.data 0x3F800000 # 804A565C => lis r28, 0x0000
.data 0x00000000 # 804A5660 => .invalid
# region @ 804A5668 (4 bytes)
.data 0x804A5668 # address
.data 0x00000004 # size
.data 0x00000000 # 804A5668 => .invalid
# region @ 804A5670 (4 bytes)
.data 0x804A5670 # address
.data 0x00000004 # size
.data 0x3F800000 # 804A5670 => lis r28, 0x0000
# region @ 804A5678 (12 bytes)
.data 0x804A5678 # address
.data 0x0000000C # size
.data 0x3ECCCCCD # 804A5678 => subis r22, r12, 0x3333
.data 0x3DCCCCCD # 804A567C => subis r14, r12, 0x3333
.data 0x3DCCCCCD # 804A5680 => subis r14, r12, 0x3333
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,54 @@
.meta name="DC targets"
.meta description="Change the target\nreticle colors to\nthose used on the\nDreamcast"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 802AD3D0 (4 bytes)
.data 0x802AD3D0 # address
.data 0x00000004 # size
.data 0x3C8000FF # 802AD3D0 => lis r4, 0x00FF
# region @ 802AD3E4 (4 bytes)
.data 0x802AD3E4 # address
.data 0x00000004 # size
.data 0x388000FF # 802AD3E4 => li r4, 0x00FF
# region @ 802AD3F8 (4 bytes)
.data 0x802AD3F8 # address
.data 0x00000004 # size
.data 0x3884FF00 # 802AD3F8 => subi r4, r4, 0x0100
# region @ 804A7AD8 (8 bytes)
.data 0x804A7AD8 # address
.data 0x00000008 # size
.data 0x3F800000 # 804A7AD8 => lis r28, 0x0000
.data 0x00000000 # 804A7ADC => .invalid
# region @ 804A7AE8 (8 bytes)
.data 0x804A7AE8 # address
.data 0x00000008 # size
.data 0x3F800000 # 804A7AE8 => lis r28, 0x0000
.data 0x00000000 # 804A7AEC => .invalid
# region @ 804A7AF8 (12 bytes)
.data 0x804A7AF8 # address
.data 0x0000000C # size
.data 0x3F800000 # 804A7AF8 => lis r28, 0x0000
.data 0x3F800000 # 804A7AFC => lis r28, 0x0000
.data 0x00000000 # 804A7B00 => .invalid
# region @ 804A7B08 (4 bytes)
.data 0x804A7B08 # address
.data 0x00000004 # size
.data 0x00000000 # 804A7B08 => .invalid
# region @ 804A7B10 (4 bytes)
.data 0x804A7B10 # address
.data 0x00000004 # size
.data 0x3F800000 # 804A7B10 => lis r28, 0x0000
# region @ 804A7B18 (12 bytes)
.data 0x804A7B18 # address
.data 0x0000000C # size
.data 0x3ECCCCCD # 804A7B18 => subis r22, r12, 0x3333
.data 0x3DCCCCCD # 804A7B1C => subis r14, r12, 0x3333
.data 0x3DCCCCCD # 804A7B20 => subis r14, r12, 0x3333
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,54 @@
.meta name="DC targets"
.meta description="Change the target\nreticle colors to\nthose used on the\nDreamcast"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 802AD184 (4 bytes)
.data 0x802AD184 # address
.data 0x00000004 # size
.data 0x3C8000FF # 802AD184 => lis r4, 0x00FF
# region @ 802AD198 (4 bytes)
.data 0x802AD198 # address
.data 0x00000004 # size
.data 0x388000FF # 802AD198 => li r4, 0x00FF
# region @ 802AD1AC (4 bytes)
.data 0x802AD1AC # address
.data 0x00000004 # size
.data 0x3884FF00 # 802AD1AC => subi r4, r4, 0x0100
# region @ 804A7898 (8 bytes)
.data 0x804A7898 # address
.data 0x00000008 # size
.data 0x3F800000 # 804A7898 => lis r28, 0x0000
.data 0x00000000 # 804A789C => .invalid
# region @ 804A78A8 (8 bytes)
.data 0x804A78A8 # address
.data 0x00000008 # size
.data 0x3F800000 # 804A78A8 => lis r28, 0x0000
.data 0x00000000 # 804A78AC => .invalid
# region @ 804A78B8 (12 bytes)
.data 0x804A78B8 # address
.data 0x0000000C # size
.data 0x3F800000 # 804A78B8 => lis r28, 0x0000
.data 0x3F800000 # 804A78BC => lis r28, 0x0000
.data 0x00000000 # 804A78C0 => .invalid
# region @ 804A78C8 (4 bytes)
.data 0x804A78C8 # address
.data 0x00000004 # size
.data 0x00000000 # 804A78C8 => .invalid
# region @ 804A78D0 (4 bytes)
.data 0x804A78D0 # address
.data 0x00000004 # size
.data 0x3F800000 # 804A78D0 => lis r28, 0x0000
# region @ 804A78D8 (12 bytes)
.data 0x804A78D8 # address
.data 0x0000000C # size
.data 0x3ECCCCCD # 804A78D8 => subis r22, r12, 0x3333
.data 0x3DCCCCCD # 804A78DC => subis r14, r12, 0x3333
.data 0x3DCCCCCD # 804A78E0 => subis r14, r12, 0x3333
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,54 @@
.meta name="DC targets"
.meta description="Change the target\nreticle colors to\nthose used on the\nDreamcast"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 802ACACC (4 bytes)
.data 0x802ACACC # address
.data 0x00000004 # size
.data 0x3C8000FF # 802ACACC => lis r4, 0x00FF
# region @ 802ACAE0 (4 bytes)
.data 0x802ACAE0 # address
.data 0x00000004 # size
.data 0x388000FF # 802ACAE0 => li r4, 0x00FF
# region @ 802ACAF4 (4 bytes)
.data 0x802ACAF4 # address
.data 0x00000004 # size
.data 0x3884FF00 # 802ACAF4 => subi r4, r4, 0x0100
# region @ 804A75E8 (8 bytes)
.data 0x804A75E8 # address
.data 0x00000008 # size
.data 0x3F800000 # 804A75E8 => lis r28, 0x0000
.data 0x00000000 # 804A75EC => .invalid
# region @ 804A75F8 (8 bytes)
.data 0x804A75F8 # address
.data 0x00000008 # size
.data 0x3F800000 # 804A75F8 => lis r28, 0x0000
.data 0x00000000 # 804A75FC => .invalid
# region @ 804A7608 (12 bytes)
.data 0x804A7608 # address
.data 0x0000000C # size
.data 0x3F800000 # 804A7608 => lis r28, 0x0000
.data 0x3F800000 # 804A760C => lis r28, 0x0000
.data 0x00000000 # 804A7610 => .invalid
# region @ 804A7618 (4 bytes)
.data 0x804A7618 # address
.data 0x00000004 # size
.data 0x00000000 # 804A7618 => .invalid
# region @ 804A7620 (4 bytes)
.data 0x804A7620 # address
.data 0x00000004 # size
.data 0x3F800000 # 804A7620 => lis r28, 0x0000
# region @ 804A7628 (12 bytes)
.data 0x804A7628 # address
.data 0x0000000C # size
.data 0x3ECCCCCD # 804A7628 => subis r22, r12, 0x3333
.data 0x3DCCCCCD # 804A762C => subis r14, r12, 0x3333
.data 0x3DCCCCCD # 804A7630 => subis r14, r12, 0x3333
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,53 @@
.meta name="Decoction"
.meta description="Make the Decoction\nitem reset your\nmaterial usage"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 803515F4 (152 bytes)
.data 0x803515F4 # address
.data 0x00000098 # size
.data 0x880300EE # 803515F4 => lbz r0, [r3 + 0x00EE]
.data 0x2800000B # 803515F8 => cmplwi r0, 11
.data 0x40820144 # 803515FC => bne +0x00000144 /* 80351740 */
.data 0x83E300F0 # 80351600 => lwz r31, [r3 + 0x00F0]
.data 0x38000000 # 80351604 => li r0, 0x0000
.data 0x60000000 # 80351608 => nop
.data 0x38800374 # 8035160C => li r4, 0x0374
.data 0x38A00D38 # 80351610 => li r5, 0x0D38
.data 0x48000059 # 80351614 => bl +0x00000058 /* 8035166C */
.data 0x38A00D3A # 80351618 => li r5, 0x0D3A
.data 0x48000051 # 8035161C => bl +0x00000050 /* 8035166C */
.data 0x38A00D3C # 80351620 => li r5, 0x0D3C
.data 0x48000049 # 80351624 => bl +0x00000048 /* 8035166C */
.data 0x38A00D40 # 80351628 => li r5, 0x0D40
.data 0x48000041 # 8035162C => bl +0x00000040 /* 8035166C */
.data 0x38A00D44 # 80351630 => li r5, 0x0D44
.data 0x48000039 # 80351634 => bl +0x00000038 /* 8035166C */
.data 0x7FE3FB78 # 80351638 => mr r3, r31
.data 0x4BE64BD9 # 8035163C => bl -0x0019B428 /* 801B6214 */
.data 0xA01F032C # 80351640 => lhz r0, [r31 + 0x032C]
.data 0xA07F02B8 # 80351644 => lhz r3, [r31 + 0x02B8]
.data 0x7C001840 # 80351648 => cmpl r0, r3
.data 0x40810008 # 8035164C => ble +0x00000008 /* 80351654 */
.data 0xB07F032C # 80351650 => sth [r31 + 0x032C], r3
.data 0xA01F032E # 80351654 => lhz r0, [r31 + 0x032E]
.data 0xA07F02BA # 80351658 => lhz r3, [r31 + 0x02BA]
.data 0x7C001840 # 8035165C => cmpl r0, r3
.data 0x40810008 # 80351660 => ble +0x00000008 /* 80351668 */
.data 0xB07F032E # 80351664 => sth [r31 + 0x032E], r3
.data 0x480000D8 # 80351668 => b +0x000000D8 /* 80351740 */
.data 0x7CDF20AE # 8035166C => lbzx r6, [r31 + r4]
.data 0x7CFF2A2E # 80351670 => lhzx r7, [r31 + r5]
.data 0x54C6083C # 80351674 => rlwinm r6, r6, 1, 0, 30
.data 0x7CE63850 # 80351678 => subf r7, r6, r7
.data 0x7CFF2B2E # 8035167C => sthx [r31 + r5], r7
.data 0x7C1F21AE # 80351680 => stbx [r31 + r4], r0
.data 0x38840001 # 80351684 => addi r4, r4, 0x0001
.data 0x4E800020 # 80351688 => blr
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,53 @@
.meta name="Decoction"
.meta description="Make the Decoction\nitem reset your\nmaterial usage"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 80351638 (152 bytes)
.data 0x80351638 # address
.data 0x00000098 # size
.data 0x880300EE # 80351638 => lbz r0, [r3 + 0x00EE]
.data 0x2800000B # 8035163C => cmplwi r0, 11
.data 0x40820144 # 80351640 => bne +0x00000144 /* 80351784 */
.data 0x83E300F0 # 80351644 => lwz r31, [r3 + 0x00F0]
.data 0x38000000 # 80351648 => li r0, 0x0000
.data 0x60000000 # 8035164C => nop
.data 0x38800374 # 80351650 => li r4, 0x0374
.data 0x38A00D38 # 80351654 => li r5, 0x0D38
.data 0x48000059 # 80351658 => bl +0x00000058 /* 803516B0 */
.data 0x38A00D3A # 8035165C => li r5, 0x0D3A
.data 0x48000051 # 80351660 => bl +0x00000050 /* 803516B0 */
.data 0x38A00D3C # 80351664 => li r5, 0x0D3C
.data 0x48000049 # 80351668 => bl +0x00000048 /* 803516B0 */
.data 0x38A00D40 # 8035166C => li r5, 0x0D40
.data 0x48000041 # 80351670 => bl +0x00000040 /* 803516B0 */
.data 0x38A00D44 # 80351674 => li r5, 0x0D44
.data 0x48000039 # 80351678 => bl +0x00000038 /* 803516B0 */
.data 0x7FE3FB78 # 8035167C => mr r3, r31
.data 0x4BE64B95 # 80351680 => bl -0x0019B46C /* 801B6214 */
.data 0xA01F032C # 80351684 => lhz r0, [r31 + 0x032C]
.data 0xA07F02B8 # 80351688 => lhz r3, [r31 + 0x02B8]
.data 0x7C001840 # 8035168C => cmpl r0, r3
.data 0x40810008 # 80351690 => ble +0x00000008 /* 80351698 */
.data 0xB07F032C # 80351694 => sth [r31 + 0x032C], r3
.data 0xA01F032E # 80351698 => lhz r0, [r31 + 0x032E]
.data 0xA07F02BA # 8035169C => lhz r3, [r31 + 0x02BA]
.data 0x7C001840 # 803516A0 => cmpl r0, r3
.data 0x40810008 # 803516A4 => ble +0x00000008 /* 803516AC */
.data 0xB07F032E # 803516A8 => sth [r31 + 0x032E], r3
.data 0x480000D8 # 803516AC => b +0x000000D8 /* 80351784 */
.data 0x7CDF20AE # 803516B0 => lbzx r6, [r31 + r4]
.data 0x7CFF2A2E # 803516B4 => lhzx r7, [r31 + r5]
.data 0x54C6083C # 803516B8 => rlwinm r6, r6, 1, 0, 30
.data 0x7CE63850 # 803516BC => subf r7, r6, r7
.data 0x7CFF2B2E # 803516C0 => sthx [r31 + r5], r7
.data 0x7C1F21AE # 803516C4 => stbx [r31 + r4], r0
.data 0x38840001 # 803516C8 => addi r4, r4, 0x0001
.data 0x4E800020 # 803516CC => blr
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,53 @@
.meta name="Decoction"
.meta description="Make the Decoction\nitem reset your\nmaterial usage"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 80353220 (152 bytes)
.data 0x80353220 # address
.data 0x00000098 # size
.data 0x880300EE # 80353220 => lbz r0, [r3 + 0x00EE]
.data 0x2800000B # 80353224 => cmplwi r0, 11
.data 0x40820144 # 80353228 => bne +0x00000144 /* 8035336C */
.data 0x83E300F0 # 8035322C => lwz r31, [r3 + 0x00F0]
.data 0x38000000 # 80353230 => li r0, 0x0000
.data 0x60000000 # 80353234 => nop
.data 0x38800374 # 80353238 => li r4, 0x0374
.data 0x38A00D38 # 8035323C => li r5, 0x0D38
.data 0x48000059 # 80353240 => bl +0x00000058 /* 80353298 */
.data 0x38A00D3A # 80353244 => li r5, 0x0D3A
.data 0x48000051 # 80353248 => bl +0x00000050 /* 80353298 */
.data 0x38A00D3C # 8035324C => li r5, 0x0D3C
.data 0x48000049 # 80353250 => bl +0x00000048 /* 80353298 */
.data 0x38A00D40 # 80353254 => li r5, 0x0D40
.data 0x48000041 # 80353258 => bl +0x00000040 /* 80353298 */
.data 0x38A00D44 # 8035325C => li r5, 0x0D44
.data 0x48000039 # 80353260 => bl +0x00000038 /* 80353298 */
.data 0x7FE3FB78 # 80353264 => mr r3, r31
.data 0x4BE63145 # 80353268 => bl -0x0019CEBC /* 801B63AC */
.data 0xA01F032C # 8035326C => lhz r0, [r31 + 0x032C]
.data 0xA07F02B8 # 80353270 => lhz r3, [r31 + 0x02B8]
.data 0x7C001840 # 80353274 => cmpl r0, r3
.data 0x40810008 # 80353278 => ble +0x00000008 /* 80353280 */
.data 0xB07F032C # 8035327C => sth [r31 + 0x032C], r3
.data 0xA01F032E # 80353280 => lhz r0, [r31 + 0x032E]
.data 0xA07F02BA # 80353284 => lhz r3, [r31 + 0x02BA]
.data 0x7C001840 # 80353288 => cmpl r0, r3
.data 0x40810008 # 8035328C => ble +0x00000008 /* 80353294 */
.data 0xB07F032E # 80353290 => sth [r31 + 0x032E], r3
.data 0x480000D8 # 80353294 => b +0x000000D8 /* 8035336C */
.data 0x7CDF20AE # 80353298 => lbzx r6, [r31 + r4]
.data 0x7CFF2A2E # 8035329C => lhzx r7, [r31 + r5]
.data 0x54C6083C # 803532A0 => rlwinm r6, r6, 1, 0, 30
.data 0x7CE63850 # 803532A4 => subf r7, r6, r7
.data 0x7CFF2B2E # 803532A8 => sthx [r31 + r5], r7
.data 0x7C1F21AE # 803532AC => stbx [r31 + r4], r0
.data 0x38840001 # 803532B0 => addi r4, r4, 0x0001
.data 0x4E800020 # 803532B4 => blr
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,53 @@
.meta name="Decoction"
.meta description="Make the Decoction\nitem reset your\nmaterial usage"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 80350740 (152 bytes)
.data 0x80350740 # address
.data 0x00000098 # size
.data 0x880300EE # 80350740 => lbz r0, [r3 + 0x00EE]
.data 0x2800000B # 80350744 => cmplwi r0, 11
.data 0x40820144 # 80350748 => bne +0x00000144 /* 8035088C */
.data 0x83E300F0 # 8035074C => lwz r31, [r3 + 0x00F0]
.data 0x38000000 # 80350750 => li r0, 0x0000
.data 0x60000000 # 80350754 => nop
.data 0x38800374 # 80350758 => li r4, 0x0374
.data 0x38A00D38 # 8035075C => li r5, 0x0D38
.data 0x48000059 # 80350760 => bl +0x00000058 /* 803507B8 */
.data 0x38A00D3A # 80350764 => li r5, 0x0D3A
.data 0x48000051 # 80350768 => bl +0x00000050 /* 803507B8 */
.data 0x38A00D3C # 8035076C => li r5, 0x0D3C
.data 0x48000049 # 80350770 => bl +0x00000048 /* 803507B8 */
.data 0x38A00D40 # 80350774 => li r5, 0x0D40
.data 0x48000041 # 80350778 => bl +0x00000040 /* 803507B8 */
.data 0x38A00D44 # 8035077C => li r5, 0x0D44
.data 0x48000039 # 80350780 => bl +0x00000038 /* 803507B8 */
.data 0x7FE3FB78 # 80350784 => mr r3, r31
.data 0x4BE656A1 # 80350788 => bl -0x0019A960 /* 801B5E28 */
.data 0xA01F032C # 8035078C => lhz r0, [r31 + 0x032C]
.data 0xA07F02B8 # 80350790 => lhz r3, [r31 + 0x02B8]
.data 0x7C001840 # 80350794 => cmpl r0, r3
.data 0x40810008 # 80350798 => ble +0x00000008 /* 803507A0 */
.data 0xB07F032C # 8035079C => sth [r31 + 0x032C], r3
.data 0xA01F032E # 803507A0 => lhz r0, [r31 + 0x032E]
.data 0xA07F02BA # 803507A4 => lhz r3, [r31 + 0x02BA]
.data 0x7C001840 # 803507A8 => cmpl r0, r3
.data 0x40810008 # 803507AC => ble +0x00000008 /* 803507B4 */
.data 0xB07F032E # 803507B0 => sth [r31 + 0x032E], r3
.data 0x480000D8 # 803507B4 => b +0x000000D8 /* 8035088C */
.data 0x7CDF20AE # 803507B8 => lbzx r6, [r31 + r4]
.data 0x7CFF2A2E # 803507BC => lhzx r7, [r31 + r5]
.data 0x54C6083C # 803507C0 => rlwinm r6, r6, 1, 0, 30
.data 0x7CE63850 # 803507C4 => subf r7, r6, r7
.data 0x7CFF2B2E # 803507C8 => sthx [r31 + r5], r7
.data 0x7C1F21AE # 803507CC => stbx [r31 + r4], r0
.data 0x38840001 # 803507D0 => addi r4, r4, 0x0001
.data 0x4E800020 # 803507D4 => blr
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,53 @@
.meta name="Decoction"
.meta description="Make the Decoction\nitem reset your\nmaterial usage"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 80351B44 (152 bytes)
.data 0x80351B44 # address
.data 0x00000098 # size
.data 0x880300EE # 80351B44 => lbz r0, [r3 + 0x00EE]
.data 0x2800000B # 80351B48 => cmplwi r0, 11
.data 0x40820144 # 80351B4C => bne +0x00000144 /* 80351C90 */
.data 0x83E300F0 # 80351B50 => lwz r31, [r3 + 0x00F0]
.data 0x38000000 # 80351B54 => li r0, 0x0000
.data 0x60000000 # 80351B58 => nop
.data 0x38800374 # 80351B5C => li r4, 0x0374
.data 0x38A00D38 # 80351B60 => li r5, 0x0D38
.data 0x48000059 # 80351B64 => bl +0x00000058 /* 80351BBC */
.data 0x38A00D3A # 80351B68 => li r5, 0x0D3A
.data 0x48000051 # 80351B6C => bl +0x00000050 /* 80351BBC */
.data 0x38A00D3C # 80351B70 => li r5, 0x0D3C
.data 0x48000049 # 80351B74 => bl +0x00000048 /* 80351BBC */
.data 0x38A00D40 # 80351B78 => li r5, 0x0D40
.data 0x48000041 # 80351B7C => bl +0x00000040 /* 80351BBC */
.data 0x38A00D44 # 80351B80 => li r5, 0x0D44
.data 0x48000039 # 80351B84 => bl +0x00000038 /* 80351BBC */
.data 0x7FE3FB78 # 80351B88 => mr r3, r31
.data 0x4BE646F1 # 80351B8C => bl -0x0019B910 /* 801B627C */
.data 0xA01F032C # 80351B90 => lhz r0, [r31 + 0x032C]
.data 0xA07F02B8 # 80351B94 => lhz r3, [r31 + 0x02B8]
.data 0x7C001840 # 80351B98 => cmpl r0, r3
.data 0x40810008 # 80351B9C => ble +0x00000008 /* 80351BA4 */
.data 0xB07F032C # 80351BA0 => sth [r31 + 0x032C], r3
.data 0xA01F032E # 80351BA4 => lhz r0, [r31 + 0x032E]
.data 0xA07F02BA # 80351BA8 => lhz r3, [r31 + 0x02BA]
.data 0x7C001840 # 80351BAC => cmpl r0, r3
.data 0x40810008 # 80351BB0 => ble +0x00000008 /* 80351BB8 */
.data 0xB07F032E # 80351BB4 => sth [r31 + 0x032E], r3
.data 0x480000D8 # 80351BB8 => b +0x000000D8 /* 80351C90 */
.data 0x7CDF20AE # 80351BBC => lbzx r6, [r31 + r4]
.data 0x7CFF2A2E # 80351BC0 => lhzx r7, [r31 + r5]
.data 0x54C6083C # 80351BC4 => rlwinm r6, r6, 1, 0, 30
.data 0x7CE63850 # 80351BC8 => subf r7, r6, r7
.data 0x7CFF2B2E # 80351BCC => sthx [r31 + r5], r7
.data 0x7C1F21AE # 80351BD0 => stbx [r31 + r4], r0
.data 0x38840001 # 80351BD4 => addi r4, r4, 0x0001
.data 0x4E800020 # 80351BD8 => blr
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,53 @@
.meta name="Decoction"
.meta description="Make the Decoction\nitem reset your\nmaterial usage"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 803530A0 (152 bytes)
.data 0x803530A0 # address
.data 0x00000098 # size
.data 0x880300EE # 803530A0 => lbz r0, [r3 + 0x00EE]
.data 0x2800000B # 803530A4 => cmplwi r0, 11
.data 0x40820144 # 803530A8 => bne +0x00000144 /* 803531EC */
.data 0x83E300F0 # 803530AC => lwz r31, [r3 + 0x00F0]
.data 0x38000000 # 803530B0 => li r0, 0x0000
.data 0x60000000 # 803530B4 => nop
.data 0x38800374 # 803530B8 => li r4, 0x0374
.data 0x38A00D38 # 803530BC => li r5, 0x0D38
.data 0x48000059 # 803530C0 => bl +0x00000058 /* 80353118 */
.data 0x38A00D3A # 803530C4 => li r5, 0x0D3A
.data 0x48000051 # 803530C8 => bl +0x00000050 /* 80353118 */
.data 0x38A00D3C # 803530CC => li r5, 0x0D3C
.data 0x48000049 # 803530D0 => bl +0x00000048 /* 80353118 */
.data 0x38A00D40 # 803530D4 => li r5, 0x0D40
.data 0x48000041 # 803530D8 => bl +0x00000040 /* 80353118 */
.data 0x38A00D44 # 803530DC => li r5, 0x0D44
.data 0x48000039 # 803530E0 => bl +0x00000038 /* 80353118 */
.data 0x7FE3FB78 # 803530E4 => mr r3, r31
.data 0x4BE654CD # 803530E8 => bl -0x0019AB34 /* 801B85B4 */
.data 0xA01F032C # 803530EC => lhz r0, [r31 + 0x032C]
.data 0xA07F02B8 # 803530F0 => lhz r3, [r31 + 0x02B8]
.data 0x7C001840 # 803530F4 => cmpl r0, r3
.data 0x40810008 # 803530F8 => ble +0x00000008 /* 80353100 */
.data 0xB07F032C # 803530FC => sth [r31 + 0x032C], r3
.data 0xA01F032E # 80353100 => lhz r0, [r31 + 0x032E]
.data 0xA07F02BA # 80353104 => lhz r3, [r31 + 0x02BA]
.data 0x7C001840 # 80353108 => cmpl r0, r3
.data 0x40810008 # 8035310C => ble +0x00000008 /* 80353114 */
.data 0xB07F032E # 80353110 => sth [r31 + 0x032E], r3
.data 0x480000D8 # 80353114 => b +0x000000D8 /* 803531EC */
.data 0x7CDF20AE # 80353118 => lbzx r6, [r31 + r4]
.data 0x7CFF2A2E # 8035311C => lhzx r7, [r31 + r5]
.data 0x54C6083C # 80353120 => rlwinm r6, r6, 1, 0, 30
.data 0x7CE63850 # 80353124 => subf r7, r6, r7
.data 0x7CFF2B2E # 80353128 => sthx [r31 + r5], r7
.data 0x7C1F21AE # 8035312C => stbx [r31 + r4], r0
.data 0x38840001 # 80353130 => addi r4, r4, 0x0001
.data 0x4E800020 # 80353134 => blr
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,53 @@
.meta name="Decoction"
.meta description="Make the Decoction\nitem reset your\nmaterial usage"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 80352E54 (152 bytes)
.data 0x80352E54 # address
.data 0x00000098 # size
.data 0x880300EE # 80352E54 => lbz r0, [r3 + 0x00EE]
.data 0x2800000B # 80352E58 => cmplwi r0, 11
.data 0x40820144 # 80352E5C => bne +0x00000144 /* 80352FA0 */
.data 0x83E300F0 # 80352E60 => lwz r31, [r3 + 0x00F0]
.data 0x38000000 # 80352E64 => li r0, 0x0000
.data 0x60000000 # 80352E68 => nop
.data 0x38800374 # 80352E6C => li r4, 0x0374
.data 0x38A00D38 # 80352E70 => li r5, 0x0D38
.data 0x48000059 # 80352E74 => bl +0x00000058 /* 80352ECC */
.data 0x38A00D3A # 80352E78 => li r5, 0x0D3A
.data 0x48000051 # 80352E7C => bl +0x00000050 /* 80352ECC */
.data 0x38A00D3C # 80352E80 => li r5, 0x0D3C
.data 0x48000049 # 80352E84 => bl +0x00000048 /* 80352ECC */
.data 0x38A00D40 # 80352E88 => li r5, 0x0D40
.data 0x48000041 # 80352E8C => bl +0x00000040 /* 80352ECC */
.data 0x38A00D44 # 80352E90 => li r5, 0x0D44
.data 0x48000039 # 80352E94 => bl +0x00000038 /* 80352ECC */
.data 0x7FE3FB78 # 80352E98 => mr r3, r31
.data 0x4BE634AD # 80352E9C => bl -0x0019CB54 /* 801B6348 */
.data 0xA01F032C # 80352EA0 => lhz r0, [r31 + 0x032C]
.data 0xA07F02B8 # 80352EA4 => lhz r3, [r31 + 0x02B8]
.data 0x7C001840 # 80352EA8 => cmpl r0, r3
.data 0x40810008 # 80352EAC => ble +0x00000008 /* 80352EB4 */
.data 0xB07F032C # 80352EB0 => sth [r31 + 0x032C], r3
.data 0xA01F032E # 80352EB4 => lhz r0, [r31 + 0x032E]
.data 0xA07F02BA # 80352EB8 => lhz r3, [r31 + 0x02BA]
.data 0x7C001840 # 80352EBC => cmpl r0, r3
.data 0x40810008 # 80352EC0 => ble +0x00000008 /* 80352EC8 */
.data 0xB07F032E # 80352EC4 => sth [r31 + 0x032E], r3
.data 0x480000D8 # 80352EC8 => b +0x000000D8 /* 80352FA0 */
.data 0x7CDF20AE # 80352ECC => lbzx r6, [r31 + r4]
.data 0x7CFF2A2E # 80352ED0 => lhzx r7, [r31 + r5]
.data 0x54C6083C # 80352ED4 => rlwinm r6, r6, 1, 0, 30
.data 0x7CE63850 # 80352ED8 => subf r7, r6, r7
.data 0x7CFF2B2E # 80352EDC => sthx [r31 + r5], r7
.data 0x7C1F21AE # 80352EE0 => stbx [r31 + r4], r0
.data 0x38840001 # 80352EE4 => addi r4, r4, 0x0001
.data 0x4E800020 # 80352EE8 => blr
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,53 @@
.meta name="Decoction"
.meta description="Make the Decoction\nitem reset your\nmaterial usage"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 80352614 (152 bytes)
.data 0x80352614 # address
.data 0x00000098 # size
.data 0x880300EE # 80352614 => lbz r0, [r3 + 0x00EE]
.data 0x2800000B # 80352618 => cmplwi r0, 11
.data 0x40820144 # 8035261C => bne +0x00000144 /* 80352760 */
.data 0x83E300F0 # 80352620 => lwz r31, [r3 + 0x00F0]
.data 0x38000000 # 80352624 => li r0, 0x0000
.data 0x60000000 # 80352628 => nop
.data 0x38800374 # 8035262C => li r4, 0x0374
.data 0x38A00D38 # 80352630 => li r5, 0x0D38
.data 0x48000059 # 80352634 => bl +0x00000058 /* 8035268C */
.data 0x38A00D3A # 80352638 => li r5, 0x0D3A
.data 0x48000051 # 8035263C => bl +0x00000050 /* 8035268C */
.data 0x38A00D3C # 80352640 => li r5, 0x0D3C
.data 0x48000049 # 80352644 => bl +0x00000048 /* 8035268C */
.data 0x38A00D40 # 80352648 => li r5, 0x0D40
.data 0x48000041 # 8035264C => bl +0x00000040 /* 8035268C */
.data 0x38A00D44 # 80352650 => li r5, 0x0D44
.data 0x48000039 # 80352654 => bl +0x00000038 /* 8035268C */
.data 0x7FE3FB78 # 80352658 => mr r3, r31
.data 0x4BE6420D # 8035265C => bl -0x0019BDF4 /* 801B6868 */
.data 0xA01F032C # 80352660 => lhz r0, [r31 + 0x032C]
.data 0xA07F02B8 # 80352664 => lhz r3, [r31 + 0x02B8]
.data 0x7C001840 # 80352668 => cmpl r0, r3
.data 0x40810008 # 8035266C => ble +0x00000008 /* 80352674 */
.data 0xB07F032C # 80352670 => sth [r31 + 0x032C], r3
.data 0xA01F032E # 80352674 => lhz r0, [r31 + 0x032E]
.data 0xA07F02BA # 80352678 => lhz r3, [r31 + 0x02BA]
.data 0x7C001840 # 8035267C => cmpl r0, r3
.data 0x40810008 # 80352680 => ble +0x00000008 /* 80352688 */
.data 0xB07F032E # 80352684 => sth [r31 + 0x032E], r3
.data 0x480000D8 # 80352688 => b +0x000000D8 /* 80352760 */
.data 0x7CDF20AE # 8035268C => lbzx r6, [r31 + r4]
.data 0x7CFF2A2E # 80352690 => lhzx r7, [r31 + r5]
.data 0x54C6083C # 80352694 => rlwinm r6, r6, 1, 0, 30
.data 0x7CE63850 # 80352698 => subf r7, r6, r7
.data 0x7CFF2B2E # 8035269C => sthx [r31 + r5], r7
.data 0x7C1F21AE # 803526A0 => stbx [r31 + r4], r0
.data 0x38840001 # 803526A4 => addi r4, r4, 0x0001
.data 0x4E800020 # 803526A8 => blr
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,75 @@
.meta name="Draw Distance"
.meta description="Extend the draw\ndistance of many\nobjects"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000DFA0 (64 bytes)
.data 0x8000DFA0 # address
.data 0x00000040 # size
.data 0xC3C2C200 # 8000DFA0 => lfs f30, [r2 - 0x3E00]
.data 0xEFDE0072 # 8000DFA4 => fmuls f30, f30, f1
.data 0x4E800020 # 8000DFA8 => blr
.data 0xC042C200 # 8000DFAC => lfs f2, [r2 - 0x3E00]
.data 0xC01E001C # 8000DFB0 => lfs f0, [r30 + 0x001C]
.data 0xEC0000B2 # 8000DFB4 => fmuls f0, f0, f2
.data 0x4E800020 # 8000DFB8 => blr
.data 0xC382C200 # 8000DFBC => lfs f28, [r2 - 0x3E00]
.data 0xEF9C00B2 # 8000DFC0 => fmuls f28, f28, f2
.data 0x4E800020 # 8000DFC4 => blr
.data 0xC002C200 # 8000DFC8 => lfs f0, [r2 - 0x3E00]
.data 0xC023000C # 8000DFCC => lfs f1, [r3 + 0x000C]
.data 0xEC000072 # 8000DFD0 => fmuls f0, f0, f1
.data 0xD003000C # 8000DFD4 => stfs [r3 + 0x000C], f0
.data 0x3C60804C # 8000DFD8 => lis r3, 0x804C
.data 0x4E800020 # 8000DFDC => blr
# region @ 80100B8C (4 bytes)
.data 0x80100B8C # address
.data 0x00000004 # size
.data 0x4BF0D415 # 80100B8C => bl -0x000F2BEC /* 8000DFA0 */
# region @ 801570BC (4 bytes)
.data 0x801570BC # address
.data 0x00000004 # size
.data 0x4BEB6EF1 # 801570BC => bl -0x00149110 /* 8000DFAC */
# region @ 801A2040 (4 bytes)
.data 0x801A2040 # address
.data 0x00000004 # size
.data 0x4BE6BF7D # 801A2040 => bl -0x00194084 /* 8000DFBC */
# region @ 801A2240 (4 bytes)
.data 0x801A2240 # address
.data 0x00000004 # size
.data 0x4BE6BD61 # 801A2240 => bl -0x001942A0 /* 8000DFA0 */
# region @ 80205840 (4 bytes)
.data 0x80205840 # address
.data 0x00000004 # size
.data 0x4BE08789 # 80205840 => bl -0x001F7878 /* 8000DFC8 */
# region @ 80205FE4 (4 bytes)
.data 0x80205FE4 # address
.data 0x00000004 # size
.data 0x4BE07FE5 # 80205FE4 => bl -0x001F801C /* 8000DFC8 */
# region @ 805C8CB0 (4 bytes)
.data 0x805C8CB0 # address
.data 0x00000004 # size
.data 0x47AFC800 # 805C8CB0 => .invalid sc
# region @ 805C9B5C (4 bytes)
.data 0x805C9B5C # address
.data 0x00000004 # size
.data 0x47742400 # 805C9B5C => .invalid sc
# region @ 805CA184 (4 bytes)
.data 0x805CA184 # address
.data 0x00000004 # size
.data 0x491C4000 # 805CA184 => b +0x011C4000 /* 8178E184 */
# region @ 805CB010 (4 bytes)
.data 0x805CB010 # address
.data 0x00000004 # size
.data 0x47AFC800 # 805CB010 => .invalid sc
# region @ 805CB5A0 (4 bytes)
.data 0x805CB5A0 # address
.data 0x00000004 # size
.data 0x44AF0000 # 805CB5A0 => .invalid sc
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,75 @@
.meta name="Draw Distance"
.meta description="Extend the draw\ndistance of many\nobjects"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000DFA0 (64 bytes)
.data 0x8000DFA0 # address
.data 0x00000040 # size
.data 0xC3C2C200 # 8000DFA0 => lfs f30, [r2 - 0x3E00]
.data 0xEFDE0072 # 8000DFA4 => fmuls f30, f30, f1
.data 0x4E800020 # 8000DFA8 => blr
.data 0xC042C200 # 8000DFAC => lfs f2, [r2 - 0x3E00]
.data 0xC01E001C # 8000DFB0 => lfs f0, [r30 + 0x001C]
.data 0xEC0000B2 # 8000DFB4 => fmuls f0, f0, f2
.data 0x4E800020 # 8000DFB8 => blr
.data 0xC382C200 # 8000DFBC => lfs f28, [r2 - 0x3E00]
.data 0xEF9C00B2 # 8000DFC0 => fmuls f28, f28, f2
.data 0x4E800020 # 8000DFC4 => blr
.data 0xC002C200 # 8000DFC8 => lfs f0, [r2 - 0x3E00]
.data 0xC023000C # 8000DFCC => lfs f1, [r3 + 0x000C]
.data 0xEC000072 # 8000DFD0 => fmuls f0, f0, f1
.data 0xD003000C # 8000DFD4 => stfs [r3 + 0x000C], f0
.data 0x3C60804C # 8000DFD8 => lis r3, 0x804C
.data 0x4E800020 # 8000DFDC => blr
# region @ 80100B8C (4 bytes)
.data 0x80100B8C # address
.data 0x00000004 # size
.data 0x4BF0D415 # 80100B8C => bl -0x000F2BEC /* 8000DFA0 */
# region @ 801570BC (4 bytes)
.data 0x801570BC # address
.data 0x00000004 # size
.data 0x4BEB6EF1 # 801570BC => bl -0x00149110 /* 8000DFAC */
# region @ 801A2040 (4 bytes)
.data 0x801A2040 # address
.data 0x00000004 # size
.data 0x4BE6BF7D # 801A2040 => bl -0x00194084 /* 8000DFBC */
# region @ 801A2240 (4 bytes)
.data 0x801A2240 # address
.data 0x00000004 # size
.data 0x4BE6BD61 # 801A2240 => bl -0x001942A0 /* 8000DFA0 */
# region @ 80205840 (4 bytes)
.data 0x80205840 # address
.data 0x00000004 # size
.data 0x4BE08789 # 80205840 => bl -0x001F7878 /* 8000DFC8 */
# region @ 80205FE4 (4 bytes)
.data 0x80205FE4 # address
.data 0x00000004 # size
.data 0x4BE07FE5 # 80205FE4 => bl -0x001F801C /* 8000DFC8 */
# region @ 805CFCD0 (4 bytes)
.data 0x805CFCD0 # address
.data 0x00000004 # size
.data 0x47AFC800 # 805CFCD0 => .invalid sc
# region @ 805D0B7C (4 bytes)
.data 0x805D0B7C # address
.data 0x00000004 # size
.data 0x47742400 # 805D0B7C => .invalid sc
# region @ 805D11A4 (4 bytes)
.data 0x805D11A4 # address
.data 0x00000004 # size
.data 0x491C4000 # 805D11A4 => b +0x011C4000 /* 817951A4 */
# region @ 805D2030 (4 bytes)
.data 0x805D2030 # address
.data 0x00000004 # size
.data 0x47AFC800 # 805D2030 => .invalid sc
# region @ 805D25C0 (4 bytes)
.data 0x805D25C0 # address
.data 0x00000004 # size
.data 0x44AF0000 # 805D25C0 => .invalid sc
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,75 @@
.meta name="Draw Distance"
.meta description="Extend the draw\ndistance of many\nobjects"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000DFA0 (64 bytes)
.data 0x8000DFA0 # address
.data 0x00000040 # size
.data 0xC3C2C200 # 8000DFA0 => lfs f30, [r2 - 0x3E00]
.data 0xEFDE0072 # 8000DFA4 => fmuls f30, f30, f1
.data 0x4E800020 # 8000DFA8 => blr
.data 0xC042C200 # 8000DFAC => lfs f2, [r2 - 0x3E00]
.data 0xC01E001C # 8000DFB0 => lfs f0, [r30 + 0x001C]
.data 0xEC0000B2 # 8000DFB4 => fmuls f0, f0, f2
.data 0x4E800020 # 8000DFB8 => blr
.data 0xC382C200 # 8000DFBC => lfs f28, [r2 - 0x3E00]
.data 0xEF9C00B2 # 8000DFC0 => fmuls f28, f28, f2
.data 0x4E800020 # 8000DFC4 => blr
.data 0xC002C200 # 8000DFC8 => lfs f0, [r2 - 0x3E00]
.data 0xC023000C # 8000DFCC => lfs f1, [r3 + 0x000C]
.data 0xEC000072 # 8000DFD0 => fmuls f0, f0, f1
.data 0xD003000C # 8000DFD4 => stfs [r3 + 0x000C], f0
.data 0x3C60804D # 8000DFD8 => lis r3, 0x804D
.data 0x4E800020 # 8000DFDC => blr
# region @ 80100A60 (4 bytes)
.data 0x80100A60 # address
.data 0x00000004 # size
.data 0x4BF0D541 # 80100A60 => bl -0x000F2AC0 /* 8000DFA0 */
# region @ 801571DC (4 bytes)
.data 0x801571DC # address
.data 0x00000004 # size
.data 0x4BEB6DD1 # 801571DC => bl -0x00149230 /* 8000DFAC */
# region @ 801A2164 (4 bytes)
.data 0x801A2164 # address
.data 0x00000004 # size
.data 0x4BE6BE59 # 801A2164 => bl -0x001941A8 /* 8000DFBC */
# region @ 801A2364 (4 bytes)
.data 0x801A2364 # address
.data 0x00000004 # size
.data 0x4BE6BC3D # 801A2364 => bl -0x001943C4 /* 8000DFA0 */
# region @ 80206728 (4 bytes)
.data 0x80206728 # address
.data 0x00000004 # size
.data 0x4BE078A1 # 80206728 => bl -0x001F8760 /* 8000DFC8 */
# region @ 80206ECC (4 bytes)
.data 0x80206ECC # address
.data 0x00000004 # size
.data 0x4BE070FD # 80206ECC => bl -0x001F8F04 /* 8000DFC8 */
# region @ 805D94F0 (4 bytes)
.data 0x805D94F0 # address
.data 0x00000004 # size
.data 0x47AFC800 # 805D94F0 => .invalid sc
# region @ 805DA39C (4 bytes)
.data 0x805DA39C # address
.data 0x00000004 # size
.data 0x47742400 # 805DA39C => .invalid sc
# region @ 805DA9C4 (4 bytes)
.data 0x805DA9C4 # address
.data 0x00000004 # size
.data 0x491C4000 # 805DA9C4 => b +0x011C4000 /* 8179E9C4 */
# region @ 805DB850 (4 bytes)
.data 0x805DB850 # address
.data 0x00000004 # size
.data 0x47AFC800 # 805DB850 => .invalid sc
# region @ 805DBDE0 (4 bytes)
.data 0x805DBDE0 # address
.data 0x00000004 # size
.data 0x44AF0000 # 805DBDE0 => .invalid sc
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,75 @@
.meta name="Draw Distance"
.meta description="Extend the draw\ndistance of many\nobjects"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000DFA0 (64 bytes)
.data 0x8000DFA0 # address
.data 0x00000040 # size
.data 0xC3C2C1F8 # 8000DFA0 => lfs f30, [r2 - 0x3E08]
.data 0xEFDE0072 # 8000DFA4 => fmuls f30, f30, f1
.data 0x4E800020 # 8000DFA8 => blr
.data 0xC042C1F8 # 8000DFAC => lfs f2, [r2 - 0x3E08]
.data 0xC01E001C # 8000DFB0 => lfs f0, [r30 + 0x001C]
.data 0xEC0000B2 # 8000DFB4 => fmuls f0, f0, f2
.data 0x4E800020 # 8000DFB8 => blr
.data 0xC382C1F8 # 8000DFBC => lfs f28, [r2 - 0x3E08]
.data 0xEF9C00B2 # 8000DFC0 => fmuls f28, f28, f2
.data 0x4E800020 # 8000DFC4 => blr
.data 0xC002C1F8 # 8000DFC8 => lfs f0, [r2 - 0x3E08]
.data 0xC023000C # 8000DFCC => lfs f1, [r3 + 0x000C]
.data 0xEC000072 # 8000DFD0 => fmuls f0, f0, f1
.data 0xD003000C # 8000DFD4 => stfs [r3 + 0x000C], f0
.data 0x3C60804C # 8000DFD8 => lis r3, 0x804C
.data 0x4E800020 # 8000DFDC => blr
# region @ 801008E8 (4 bytes)
.data 0x801008E8 # address
.data 0x00000004 # size
.data 0x4BF0D6B9 # 801008E8 => bl -0x000F2948 /* 8000DFA0 */
# region @ 80156D00 (4 bytes)
.data 0x80156D00 # address
.data 0x00000004 # size
.data 0x4BEB72AD # 80156D00 => bl -0x00148D54 /* 8000DFAC */
# region @ 801A1C64 (4 bytes)
.data 0x801A1C64 # address
.data 0x00000004 # size
.data 0x4BE6C359 # 801A1C64 => bl -0x00193CA8 /* 8000DFBC */
# region @ 801A1E64 (4 bytes)
.data 0x801A1E64 # address
.data 0x00000004 # size
.data 0x4BE6C13D # 801A1E64 => bl -0x00193EC4 /* 8000DFA0 */
# region @ 80205044 (4 bytes)
.data 0x80205044 # address
.data 0x00000004 # size
.data 0x4BE08F85 # 80205044 => bl -0x001F707C /* 8000DFC8 */
# region @ 802057E8 (4 bytes)
.data 0x802057E8 # address
.data 0x00000004 # size
.data 0x4BE087E1 # 802057E8 => bl -0x001F7820 /* 8000DFC8 */
# region @ 805C83A8 (4 bytes)
.data 0x805C83A8 # address
.data 0x00000004 # size
.data 0x47AFC800 # 805C83A8 => .invalid sc
# region @ 805C9254 (4 bytes)
.data 0x805C9254 # address
.data 0x00000004 # size
.data 0x47742400 # 805C9254 => .invalid sc
# region @ 805C987C (4 bytes)
.data 0x805C987C # address
.data 0x00000004 # size
.data 0x491C4000 # 805C987C => b +0x011C4000 /* 8178D87C */
# region @ 805CA708 (4 bytes)
.data 0x805CA708 # address
.data 0x00000004 # size
.data 0x47AFC800 # 805CA708 => .invalid sc
# region @ 805CAC98 (4 bytes)
.data 0x805CAC98 # address
.data 0x00000004 # size
.data 0x44AF0000 # 805CAC98 => .invalid sc
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,75 @@
.meta name="Draw Distance"
.meta description="Extend the draw\ndistance of many\nobjects"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000DFA0 (64 bytes)
.data 0x8000DFA0 # address
.data 0x00000040 # size
.data 0xC3C2C1F8 # 8000DFA0 => lfs f30, [r2 - 0x3E08]
.data 0xEFDE0072 # 8000DFA4 => fmuls f30, f30, f1
.data 0x4E800020 # 8000DFA8 => blr
.data 0xC042C1F8 # 8000DFAC => lfs f2, [r2 - 0x3E08]
.data 0xC01E001C # 8000DFB0 => lfs f0, [r30 + 0x001C]
.data 0xEC0000B2 # 8000DFB4 => fmuls f0, f0, f2
.data 0x4E800020 # 8000DFB8 => blr
.data 0xC382C1F8 # 8000DFBC => lfs f28, [r2 - 0x3E08]
.data 0xEF9C00B2 # 8000DFC0 => fmuls f28, f28, f2
.data 0x4E800020 # 8000DFC4 => blr
.data 0xC002C1F8 # 8000DFC8 => lfs f0, [r2 - 0x3E08]
.data 0xC023000C # 8000DFCC => lfs f1, [r3 + 0x000C]
.data 0xEC000072 # 8000DFD0 => fmuls f0, f0, f1
.data 0xD003000C # 8000DFD4 => stfs [r3 + 0x000C], f0
.data 0x3C60804C # 8000DFD8 => lis r3, 0x804C
.data 0x4E800020 # 8000DFDC => blr
# region @ 80100AD0 (4 bytes)
.data 0x80100AD0 # address
.data 0x00000004 # size
.data 0x4BF0D4D1 # 80100AD0 => bl -0x000F2B30 /* 8000DFA0 */
# region @ 801570B4 (4 bytes)
.data 0x801570B4 # address
.data 0x00000004 # size
.data 0x4BEB6EF9 # 801570B4 => bl -0x00149108 /* 8000DFAC */
# region @ 801A203C (4 bytes)
.data 0x801A203C # address
.data 0x00000004 # size
.data 0x4BE6BF81 # 801A203C => bl -0x00194080 /* 8000DFBC */
# region @ 801A223C (4 bytes)
.data 0x801A223C # address
.data 0x00000004 # size
.data 0x4BE6BD65 # 801A223C => bl -0x0019429C /* 8000DFA0 */
# region @ 802058B8 (4 bytes)
.data 0x802058B8 # address
.data 0x00000004 # size
.data 0x4BE08711 # 802058B8 => bl -0x001F78F0 /* 8000DFC8 */
# region @ 8020605C (4 bytes)
.data 0x8020605C # address
.data 0x00000004 # size
.data 0x4BE07F6D # 8020605C => bl -0x001F8094 /* 8000DFC8 */
# region @ 805D29A8 (4 bytes)
.data 0x805D29A8 # address
.data 0x00000004 # size
.data 0x47AFC800 # 805D29A8 => .invalid sc
# region @ 805D3854 (4 bytes)
.data 0x805D3854 # address
.data 0x00000004 # size
.data 0x47742400 # 805D3854 => .invalid sc
# region @ 805D3E7C (4 bytes)
.data 0x805D3E7C # address
.data 0x00000004 # size
.data 0x491C4000 # 805D3E7C => b +0x011C4000 /* 81797E7C */
# region @ 805D4D08 (4 bytes)
.data 0x805D4D08 # address
.data 0x00000004 # size
.data 0x47AFC800 # 805D4D08 => .invalid sc
# region @ 805D5298 (4 bytes)
.data 0x805D5298 # address
.data 0x00000004 # size
.data 0x44AF0000 # 805D5298 => .invalid sc
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,75 @@
.meta name="Draw Distance"
.meta description="Extend the draw\ndistance of many\nobjects"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000DFA0 (64 bytes)
.data 0x8000DFA0 # address
.data 0x00000040 # size
.data 0xC3C2C1F8 # 8000DFA0 => lfs f30, [r2 - 0x3E08]
.data 0xEFDE0072 # 8000DFA4 => fmuls f30, f30, f1
.data 0x4E800020 # 8000DFA8 => blr
.data 0xC042C1F8 # 8000DFAC => lfs f2, [r2 - 0x3E08]
.data 0xC01E001C # 8000DFB0 => lfs f0, [r30 + 0x001C]
.data 0xEC0000B2 # 8000DFB4 => fmuls f0, f0, f2
.data 0x4E800020 # 8000DFB8 => blr
.data 0xC382C1F8 # 8000DFBC => lfs f28, [r2 - 0x3E08]
.data 0xEF9C00B2 # 8000DFC0 => fmuls f28, f28, f2
.data 0x4E800020 # 8000DFC4 => blr
.data 0xC002C1F8 # 8000DFC8 => lfs f0, [r2 - 0x3E08]
.data 0xC023000C # 8000DFCC => lfs f1, [r3 + 0x000C]
.data 0xEC000072 # 8000DFD0 => fmuls f0, f0, f1
.data 0xD003000C # 8000DFD4 => stfs [r3 + 0x000C], f0
.data 0x3C60804D # 8000DFD8 => lis r3, 0x804D
.data 0x4E800020 # 8000DFDC => blr
# region @ 80100B74 (4 bytes)
.data 0x80100B74 # address
.data 0x00000004 # size
.data 0x4BF0D42D # 80100B74 => bl -0x000F2BD4 /* 8000DFA0 */
# region @ 80157218 (4 bytes)
.data 0x80157218 # address
.data 0x00000004 # size
.data 0x4BEB6D95 # 80157218 => bl -0x0014926C /* 8000DFAC */
# region @ 801A21A0 (4 bytes)
.data 0x801A21A0 # address
.data 0x00000004 # size
.data 0x4BE6BE1D # 801A21A0 => bl -0x001941E4 /* 8000DFBC */
# region @ 801A23A0 (4 bytes)
.data 0x801A23A0 # address
.data 0x00000004 # size
.data 0x4BE6BC01 # 801A23A0 => bl -0x00194400 /* 8000DFA0 */
# region @ 80206640 (4 bytes)
.data 0x80206640 # address
.data 0x00000004 # size
.data 0x4BE07989 # 80206640 => bl -0x001F8678 /* 8000DFC8 */
# region @ 80206DE4 (4 bytes)
.data 0x80206DE4 # address
.data 0x00000004 # size
.data 0x4BE071E5 # 80206DE4 => bl -0x001F8E1C /* 8000DFC8 */
# region @ 805D9E48 (4 bytes)
.data 0x805D9E48 # address
.data 0x00000004 # size
.data 0x47AFC800 # 805D9E48 => .invalid sc
# region @ 805DACF4 (4 bytes)
.data 0x805DACF4 # address
.data 0x00000004 # size
.data 0x47742400 # 805DACF4 => .invalid sc
# region @ 805DB31C (4 bytes)
.data 0x805DB31C # address
.data 0x00000004 # size
.data 0x491C4000 # 805DB31C => b +0x011C4000 /* 8179F31C */
# region @ 805DC1A8 (4 bytes)
.data 0x805DC1A8 # address
.data 0x00000004 # size
.data 0x47AFC800 # 805DC1A8 => .invalid sc
# region @ 805DC738 (4 bytes)
.data 0x805DC738 # address
.data 0x00000004 # size
.data 0x44AF0000 # 805DC738 => .invalid sc
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,75 @@
.meta name="Draw Distance"
.meta description="Extend the draw\ndistance of many\nobjects"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000DFA0 (64 bytes)
.data 0x8000DFA0 # address
.data 0x00000040 # size
.data 0xC3C2C1F8 # 8000DFA0 => lfs f30, [r2 - 0x3E08]
.data 0xEFDE0072 # 8000DFA4 => fmuls f30, f30, f1
.data 0x4E800020 # 8000DFA8 => blr
.data 0xC042C1F8 # 8000DFAC => lfs f2, [r2 - 0x3E08]
.data 0xC01E001C # 8000DFB0 => lfs f0, [r30 + 0x001C]
.data 0xEC0000B2 # 8000DFB4 => fmuls f0, f0, f2
.data 0x4E800020 # 8000DFB8 => blr
.data 0xC382C1F8 # 8000DFBC => lfs f28, [r2 - 0x3E08]
.data 0xEF9C00B2 # 8000DFC0 => fmuls f28, f28, f2
.data 0x4E800020 # 8000DFC4 => blr
.data 0xC002C1F8 # 8000DFC8 => lfs f0, [r2 - 0x3E08]
.data 0xC023000C # 8000DFCC => lfs f1, [r3 + 0x000C]
.data 0xEC000072 # 8000DFD0 => fmuls f0, f0, f1
.data 0xD003000C # 8000DFD4 => stfs [r3 + 0x000C], f0
.data 0x3C60804D # 8000DFD8 => lis r3, 0x804D
.data 0x4E800020 # 8000DFDC => blr
# region @ 80100A50 (4 bytes)
.data 0x80100A50 # address
.data 0x00000004 # size
.data 0x4BF0D551 # 80100A50 => bl -0x000F2AB0 /* 8000DFA0 */
# region @ 80157178 (4 bytes)
.data 0x80157178 # address
.data 0x00000004 # size
.data 0x4BEB6E35 # 80157178 => bl -0x001491CC /* 8000DFAC */
# region @ 801A2100 (4 bytes)
.data 0x801A2100 # address
.data 0x00000004 # size
.data 0x4BE6BEBD # 801A2100 => bl -0x00194144 /* 8000DFBC */
# region @ 801A2300 (4 bytes)
.data 0x801A2300 # address
.data 0x00000004 # size
.data 0x4BE6BCA1 # 801A2300 => bl -0x00194360 /* 8000DFA0 */
# region @ 802063F4 (4 bytes)
.data 0x802063F4 # address
.data 0x00000004 # size
.data 0x4BE07BD5 # 802063F4 => bl -0x001F842C /* 8000DFC8 */
# region @ 80206B98 (4 bytes)
.data 0x80206B98 # address
.data 0x00000004 # size
.data 0x4BE07431 # 80206B98 => bl -0x001F8BD0 /* 8000DFC8 */
# region @ 805D9BE8 (4 bytes)
.data 0x805D9BE8 # address
.data 0x00000004 # size
.data 0x47AFC800 # 805D9BE8 => .invalid sc
# region @ 805DAA94 (4 bytes)
.data 0x805DAA94 # address
.data 0x00000004 # size
.data 0x47742400 # 805DAA94 => .invalid sc
# region @ 805DB0BC (4 bytes)
.data 0x805DB0BC # address
.data 0x00000004 # size
.data 0x491C4000 # 805DB0BC => b +0x011C4000 /* 8179F0BC */
# region @ 805DBF48 (4 bytes)
.data 0x805DBF48 # address
.data 0x00000004 # size
.data 0x47AFC800 # 805DBF48 => .invalid sc
# region @ 805DC4D8 (4 bytes)
.data 0x805DC4D8 # address
.data 0x00000004 # size
.data 0x44AF0000 # 805DC4D8 => .invalid sc
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,75 @@
.meta name="Draw Distance"
.meta description="Extend the draw\ndistance of many\nobjects"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000DFA0 (64 bytes)
.data 0x8000DFA0 # address
.data 0x00000040 # size
.data 0xC3C2C200 # 8000DFA0 => lfs f30, [r2 - 0x3E00]
.data 0xEFDE0072 # 8000DFA4 => fmuls f30, f30, f1
.data 0x4E800020 # 8000DFA8 => blr
.data 0xC042C200 # 8000DFAC => lfs f2, [r2 - 0x3E00]
.data 0xC01E001C # 8000DFB0 => lfs f0, [r30 + 0x001C]
.data 0xEC0000B2 # 8000DFB4 => fmuls f0, f0, f2
.data 0x4E800020 # 8000DFB8 => blr
.data 0xC382C200 # 8000DFBC => lfs f28, [r2 - 0x3E00]
.data 0xEF9C00B2 # 8000DFC0 => fmuls f28, f28, f2
.data 0x4E800020 # 8000DFC4 => blr
.data 0xC002C200 # 8000DFC8 => lfs f0, [r2 - 0x3E00]
.data 0xC023000C # 8000DFCC => lfs f1, [r3 + 0x000C]
.data 0xEC000072 # 8000DFD0 => fmuls f0, f0, f1
.data 0xD003000C # 8000DFD4 => stfs [r3 + 0x000C], f0
.data 0x3C60804D # 8000DFD8 => lis r3, 0x804D
.data 0x4E800020 # 8000DFDC => blr
# region @ 80100C50 (4 bytes)
.data 0x80100C50 # address
.data 0x00000004 # size
.data 0x4BF0D351 # 80100C50 => bl -0x000F2CB0 /* 8000DFA0 */
# region @ 801576A0 (4 bytes)
.data 0x801576A0 # address
.data 0x00000004 # size
.data 0x4BEB690D # 801576A0 => bl -0x001496F4 /* 8000DFAC */
# region @ 801A2628 (4 bytes)
.data 0x801A2628 # address
.data 0x00000004 # size
.data 0x4BE6B995 # 801A2628 => bl -0x0019466C /* 8000DFBC */
# region @ 801A2828 (4 bytes)
.data 0x801A2828 # address
.data 0x00000004 # size
.data 0x4BE6B779 # 801A2828 => bl -0x00194888 /* 8000DFA0 */
# region @ 80206124 (4 bytes)
.data 0x80206124 # address
.data 0x00000004 # size
.data 0x4BE07EA5 # 80206124 => bl -0x001F815C /* 8000DFC8 */
# region @ 802068C8 (4 bytes)
.data 0x802068C8 # address
.data 0x00000004 # size
.data 0x4BE07701 # 802068C8 => bl -0x001F8900 /* 8000DFC8 */
# region @ 805D5730 (4 bytes)
.data 0x805D5730 # address
.data 0x00000004 # size
.data 0x47AFC800 # 805D5730 => .invalid sc
# region @ 805D65DC (4 bytes)
.data 0x805D65DC # address
.data 0x00000004 # size
.data 0x47742400 # 805D65DC => .invalid sc
# region @ 805D6C04 (4 bytes)
.data 0x805D6C04 # address
.data 0x00000004 # size
.data 0x491C4000 # 805D6C04 => b +0x011C4000 /* 8179AC04 */
# region @ 805D7A90 (4 bytes)
.data 0x805D7A90 # address
.data 0x00000004 # size
.data 0x47AFC800 # 805D7A90 => .invalid sc
# region @ 805D8020 (4 bytes)
.data 0x805D8020 # address
.data 0x00000004 # size
.data 0x44AF0000 # 805D8020 => .invalid sc
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,234 @@
# This patch enables the debug menus in PSO Episode 3 USA. Specifically, it
# causes them all to load, but only activates one (selected by uncommenting a
# line below). See the comments for more information. Most of these editors are
# present in PSO PC and PSOX as well, but not in GC Episodes 1 & 2. There are
# notes in the below comments that may help get these editors working on PSO PC.
# This patch is only for PSO Episode 3 USA, which means it requires the
# EnableEpisode3SendFunctionCall option to be enabled in config.json. If that
# option is disabled, the Patches menu won't appear for the client. If this
# patch is run on a different client version, it will do nothing. Also, this
# patch must not be run from the Patches menu - it should only be run with the
# $patch command, since the client will likely crash if the player is not in a
# game or lobby when the patch runs.
.meta hide_from_patches_menu
.meta name="Editors"
.meta description="Enables the various\ndebug menus"
entry_ptr:
reloc0:
.offsetof start
start:
.include Episode3USAOnly
stwu [r1 - 0x20], r1
mflr r0
stw [r1 + 0x24], r0
stw [r1 + 0x10], r31
stw [r1 + 0x0C], r30
stw [r1 + 0x08], r29
# Write a short hook that updates our editors table when TEditor_destroy() is
# called
bl get_TEditor_destroy_hook_addr
mr r4, r3
bl get_TEditor_destroy_hook_end
sub r5, r3, r4
subi r5, r5, 0x08
lis r3, 0x8000
ori r3, r3, 0xBD00
bl copy_code
# Make TEditor_destroy call our hook immediately before returning
bl get_patch_branch_opcode
mr r4, r3
lis r3, 0x8002
ori r3, r3, 0xE554
li r5, 4
bl copy_code
lis r29, 0x8000
ori r29, r29, 0x17C4
construct_editors:
# Call the constructors for all the editors and save the object pointers. If
# an editor already exists, set its disable flags. (This behavior allows this
# patch to run again to switch to a different editor without changing rooms.)
# Note: In PSO PC (the version I have, at least) this table is at 00691FA8.
lis r30, 0x8043
ori r30, r30, 0x3760
addi r31, r30, 0xB4 # 15 entries * 12 bytes per entry
again:
lwz r3, [r29]
mr. r0, r3
bne editor_already_exists
lwz r0, [r30 + 0x08]
mtctr r0
bctrl
stw [r29], r3
mr. r0, r3
beq editor_construction_failed
editor_already_exists:
li r0, 0x0014 # Flags: disable update, disable render
# See comment below about the flags field on PSO PC.
sth [r3 + 0x04], r0
editor_construction_failed:
addi r30, r30, 0x0C
addi r29, r29, 4
cmpl r30, r31
blt again
activate_chosen_editor:
# All of the editors have flags set at construction time that effectively
# disable them (by disabling both the update and render functions). At the
# time this code is executed, the flags are already set (and we set them again
# in the above loop anyway), so we can unset the flags for whichever editor we
# want to run by uncommenting the appropriate lwz opcode below.
# Most of these tools expect input from the controller in port 3; the comments
# below all refer to inputs from that port.
li r4, 0
lis r29, 0x8000
ori r29, r29, 0x17C4
# lwz r4, [r29 + 0x00] # TGroupSetEditor
# This editor is very similar to TGroupEnemySetEditor (see below).
# lwz r4, [r29 + 0x04] # TGroupEnemySetEditor
# This editor only works in a game; it crashes if loaded in the lobby.
# Use the D-pad to choose a value; hold X and use the D-pad to modify the
# selected value. Hold R to use the menu on the right.
# lwz r4, [r29 + 0x08] # TCameraEditor
# This editor displays a floating-point value at the bottom of the screen,
# which you can modify with C-left and C-right. It's not apparent what this
# value represents, though.
# lwz r4, [r29 + 0x0C] # TParticleEditor
# This editor has two modes. Hold A and press X to switch modes. In "MAIN
# MODE", use D-left/D-right to pick an effect. Hold L to make the effect
# picker manageable (instead of insanely fast). In "ELEMENT MODE", it seems
# that any of the displayed values can be modified, but the selector is very
# hard to see (the selected section is rendered in FFFFFF, while the others
# are rendered in F0F0F0 - very similar colors!). Hold A, Y, or X and use
# the D-pad to change a value in the selected section (each of A/Y/X
# corresponds to a specific field in the current section).
# lwz r4, [r29 + 0x10] # TFreeCamera
# This editor does nothing. Probably it was never implemented or the code
# was intentionally deleted (though if it was, it's not clear why only this
# editor's code was deleted).
# lwz r4, [r29 + 0x14] # TFogEditor
# Use L/R to pick a line, and the D-pad to modify the values. NO specifies
# which fog entry you're editing (0-127).
# lwz r4, [r29 + 0x18] # TLightEditor
# Used for testing character lighting. Use L to select a section and the
# D-pad to choose and modify values within that section. COLOR and DIR
# specify the properties of the highlight; AMBIENT specifies the color of
# the non-highlight lighting. It's not clear what the last section does.
# lwz r4, [r29 + 0x1C] # nothing (type table entry is blank)
# lwz r4, [r29 + 0x20] # TSeqVarsEdit
# Use L/R to change pages, use the D-pad to pick a flag, and use A to toggle
# it. There are 8192 flags in total (0x400 bytes).
# lwz r4, [r29 + 0x24] # TSetEvtScriptTest
# Use D-left/D-right to change the label value and D-up/D-down to move the
# menu selection. Two of the menu items appear to do nothing, and the last
# crashes. Maybe it works better on Episodes 1&2.
# lwz r4, [r29 + 0x28] # nothing (type table entry is blank)
# lwz r4, [r29 + 0x2C] # TQuestScriptChecker (quest debugger)
# Use L to change functions, and the D-pad to navigate within each function.
# If you set EVENT NO to a very high value, the editor can appear messed up;
# what actually happens is the value is shifted one decimal place to the
# right, but the cursor remains in the same position with incorrect
# highlighting. The value appears to be a signed 32-bit integer. On the
# registers page, use D-left/D-right to see more registers; hold X and use
# the D-pad to modify a register's value. Similarly, hold X and use the
# D-pad on the breakpoints page to change values.
# lwz r4, [r29 + 0x30] # TPlyPKEditor (battle mode options)
# Use the D-pad to move the cursor and set options. In Episode 3, it appears
# this debugger doesn't do anything. It's likely more functional in Episodes
# 1 & 2.
# lwz r4, [r29 + 0x34] # TEffIndirectEditor
# li r0, 1
# stw [r4 + 0x38], r0
# This editor is missing in PSO PC, but is present in PSOX. It appears to be
# used for testing texture overlay effects, but it doesn't work properly in
# Episode 3 - none of the effects appear to do anything. All three lines
# above must be uncommented for it to load.
# lwz r4, [r29 + 0x38] # TCCScenarioDebug (movie/cutscene tests)
# This editor exists only in Episode 3 - it is neither in PSOPC nor PSOX.
# Nothing appears immediately after activating this debugger because the
# default page is blank. Use C-left and C-right to change major pages; use
# L/R to change minor pages (sets of 50 flags within each major page). Use
# the D-pad to pick a flag and A to toggle it. On the "STAFFROLL" page, use
# the D-pad to pick a movie, and R+A to play it. If you watch the movie to
# the end, you'll return to your game and things will work as normal, but
# the textures will likely have been overwritten with garbage data.
li r3, 0
mr. r0, r4
beq skip_enable_editor
# Note: The PSO PC TObject structure is a bit different; the flags field is at
# +8 instead of +4 (but it is still a 16-bit integer).
sth [r4 + 4], r3
skip_enable_editor:
skip_all:
lwz r29, [r1 + 0x08]
lwz r30, [r1 + 0x0C]
lwz r31, [r1 + 0x10]
lwz r0, [r1 + 0x24]
addi r1, r1, 0x20
mtlr r0
blr
copy_code:
.include CopyCode
blr
get_addr_ret:
mflr r3
mtlr r0
blr
get_TEditor_destroy_hook_addr:
mflr r0
bl get_addr_ret
TEditor_destroy_hook:
li r4, 0x0F
mtctr r4
lis r4, 0x8000
ori r4, r4, 0xBD40
li r0, 0
TEditor_destroy_hook_check_next:
lwzu r5, [r4 + 4]
cmp r5, r3
bne TEditor_destroy_hook_skip_clear
stw [r4], r0
TEditor_destroy_hook_skip_clear:
bdnz TEditor_destroy_hook_check_next
blr
get_TEditor_destroy_hook_end:
get_patch_branch_opcode:
mflr r0
bl get_addr_ret
.data 0x4BFDD7AC # (at 8002E554) b 8000BD00
@@ -0,0 +1,44 @@
.meta name="Enemy HP bars"
.meta description="Show HP bars in\nenemy info windows"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 80261B9C (4 bytes)
.data 0x80261B9C # address
.data 0x00000004 # size
.data 0x4BFE1545 # 80261B9C => bl -0x0001EABC /* 802430E0 */
# region @ 804CB610 (4 bytes)
.data 0x804CB610 # address
.data 0x00000004 # size
.data 0x42640000 # 804CB610 => bc 19, 4, +0x00000000 /* 804CB610 */
# region @ 804CB61C (4 bytes)
.data 0x804CB61C # address
.data 0x00000004 # size
.data 0x42640000 # 804CB61C => bc 19, 4, +0x00000000 /* 804CB61C */
# region @ 804CB628 (4 bytes)
.data 0x804CB628 # address
.data 0x00000004 # size
.data 0x42640000 # 804CB628 => bc 19, 4, +0x00000000 /* 804CB628 */
# region @ 804CB634 (4 bytes)
.data 0x804CB634 # address
.data 0x00000004 # size
.data 0x42640000 # 804CB634 => bc 19, 4, +0x00000000 /* 804CB634 */
# region @ 804CB6D0 (4 bytes)
.data 0x804CB6D0 # address
.data 0x00000004 # size
.data 0x42300000 # 804CB6D0 => bdnz cr4, +0x00000000 /* 804CB6D0 */
# region @ 804CB6EC (4 bytes)
.data 0x804CB6EC # address
.data 0x00000004 # size
.data 0xFF00FF15 # 804CB6EC => .invalid FC, 0
# region @ 805CC8C4 (4 bytes)
.data 0x805CC8C4 # address
.data 0x00000004 # size
.data 0x42A00000 # 805CC8C4 => b +0x00000000 /* 805CC8C4 */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,44 @@
.meta name="Enemy HP bars"
.meta description="Show HP bars in\nenemy info windows"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 80261B9C (4 bytes)
.data 0x80261B9C # address
.data 0x00000004 # size
.data 0x4BFE1545 # 80261B9C => bl -0x0001EABC /* 802430E0 */
# region @ 804CBAF0 (4 bytes)
.data 0x804CBAF0 # address
.data 0x00000004 # size
.data 0x42640000 # 804CBAF0 => bc 19, 4, +0x00000000 /* 804CBAF0 */
# region @ 804CBAFC (4 bytes)
.data 0x804CBAFC # address
.data 0x00000004 # size
.data 0x42640000 # 804CBAFC => bc 19, 4, +0x00000000 /* 804CBAFC */
# region @ 804CBB08 (4 bytes)
.data 0x804CBB08 # address
.data 0x00000004 # size
.data 0x42640000 # 804CBB08 => bc 19, 4, +0x00000000 /* 804CBB08 */
# region @ 804CBB14 (4 bytes)
.data 0x804CBB14 # address
.data 0x00000004 # size
.data 0x42640000 # 804CBB14 => bc 19, 4, +0x00000000 /* 804CBB14 */
# region @ 804CBBB0 (4 bytes)
.data 0x804CBBB0 # address
.data 0x00000004 # size
.data 0x42300000 # 804CBBB0 => bdnz cr4, +0x00000000 /* 804CBBB0 */
# region @ 804CBBCC (4 bytes)
.data 0x804CBBCC # address
.data 0x00000004 # size
.data 0xFF00FF15 # 804CBBCC => .invalid FC, 0
# region @ 805D38E4 (4 bytes)
.data 0x805D38E4 # address
.data 0x00000004 # size
.data 0x42A00000 # 805D38E4 => b +0x00000000 /* 805D38E4 */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,44 @@
.meta name="Enemy HP bars"
.meta description="Show HP bars in\nenemy info windows"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 80262F5C (4 bytes)
.data 0x80262F5C # address
.data 0x00000004 # size
.data 0x4BFE12B1 # 80262F5C => bl -0x0001ED50 /* 8024420C */
# region @ 804D0158 (4 bytes)
.data 0x804D0158 # address
.data 0x00000004 # size
.data 0x42640000 # 804D0158 => bc 19, 4, +0x00000000 /* 804D0158 */
# region @ 804D0164 (4 bytes)
.data 0x804D0164 # address
.data 0x00000004 # size
.data 0x42640000 # 804D0164 => bc 19, 4, +0x00000000 /* 804D0164 */
# region @ 804D0170 (4 bytes)
.data 0x804D0170 # address
.data 0x00000004 # size
.data 0x42640000 # 804D0170 => bc 19, 4, +0x00000000 /* 804D0170 */
# region @ 804D017C (4 bytes)
.data 0x804D017C # address
.data 0x00000004 # size
.data 0x42640000 # 804D017C => bc 19, 4, +0x00000000 /* 804D017C */
# region @ 804D0218 (4 bytes)
.data 0x804D0218 # address
.data 0x00000004 # size
.data 0x42300000 # 804D0218 => bdnz cr4, +0x00000000 /* 804D0218 */
# region @ 804D0234 (4 bytes)
.data 0x804D0234 # address
.data 0x00000004 # size
.data 0xFF00FF15 # 804D0234 => .invalid FC, 0
# region @ 805DD104 (4 bytes)
.data 0x805DD104 # address
.data 0x00000004 # size
.data 0x42A00000 # 805DD104 => b +0x00000000 /* 805DD104 */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,44 @@
.meta name="Enemy HP bars"
.meta description="Show HP bars in\nenemy info windows"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 802612C4 (4 bytes)
.data 0x802612C4 # address
.data 0x00000004 # size
.data 0x4BFE1541 # 802612C4 => bl -0x0001EAC0 /* 80242804 */
# region @ 804CAE40 (4 bytes)
.data 0x804CAE40 # address
.data 0x00000004 # size
.data 0x42640000 # 804CAE40 => bc 19, 4, +0x00000000 /* 804CAE40 */
# region @ 804CAE4C (4 bytes)
.data 0x804CAE4C # address
.data 0x00000004 # size
.data 0x42640000 # 804CAE4C => bc 19, 4, +0x00000000 /* 804CAE4C */
# region @ 804CAE58 (4 bytes)
.data 0x804CAE58 # address
.data 0x00000004 # size
.data 0x42640000 # 804CAE58 => bc 19, 4, +0x00000000 /* 804CAE58 */
# region @ 804CAE64 (4 bytes)
.data 0x804CAE64 # address
.data 0x00000004 # size
.data 0x42640000 # 804CAE64 => bc 19, 4, +0x00000000 /* 804CAE64 */
# region @ 804CAF00 (4 bytes)
.data 0x804CAF00 # address
.data 0x00000004 # size
.data 0x42300000 # 804CAF00 => bdnz cr4, +0x00000000 /* 804CAF00 */
# region @ 804CAF1C (4 bytes)
.data 0x804CAF1C # address
.data 0x00000004 # size
.data 0xFF00FF15 # 804CAF1C => .invalid FC, 0
# region @ 805CBFBC (4 bytes)
.data 0x805CBFBC # address
.data 0x00000004 # size
.data 0x42A00000 # 805CBFBC => b +0x00000000 /* 805CBFBC */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,44 @@
.meta name="Enemy HP bars"
.meta description="Show HP bars in\nenemy info windows"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 80261E9C (4 bytes)
.data 0x80261E9C # address
.data 0x00000004 # size
.data 0x4BFE1349 # 80261E9C => bl -0x0001ECB8 /* 802431E4 */
# region @ 804CE590 (4 bytes)
.data 0x804CE590 # address
.data 0x00000004 # size
.data 0x42640000 # 804CE590 => bc 19, 4, +0x00000000 /* 804CE590 */
# region @ 804CE59C (4 bytes)
.data 0x804CE59C # address
.data 0x00000004 # size
.data 0x42640000 # 804CE59C => bc 19, 4, +0x00000000 /* 804CE59C */
# region @ 804CE5A8 (4 bytes)
.data 0x804CE5A8 # address
.data 0x00000004 # size
.data 0x42640000 # 804CE5A8 => bc 19, 4, +0x00000000 /* 804CE5A8 */
# region @ 804CE5B4 (4 bytes)
.data 0x804CE5B4 # address
.data 0x00000004 # size
.data 0x42640000 # 804CE5B4 => bc 19, 4, +0x00000000 /* 804CE5B4 */
# region @ 804CE650 (4 bytes)
.data 0x804CE650 # address
.data 0x00000004 # size
.data 0x42300000 # 804CE650 => bdnz cr4, +0x00000000 /* 804CE650 */
# region @ 804CE66C (4 bytes)
.data 0x804CE66C # address
.data 0x00000004 # size
.data 0xFF00FF15 # 804CE66C => .invalid FC, 0
# region @ 805D65BC (4 bytes)
.data 0x805D65BC # address
.data 0x00000004 # size
.data 0x42A00000 # 805D65BC => b +0x00000000 /* 805D65BC */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,44 @@
.meta name="Enemy HP bars"
.meta description="Show HP bars in\nenemy info windows"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 80262EE4 (4 bytes)
.data 0x80262EE4 # address
.data 0x00000004 # size
.data 0x4BFE0665 # 80262EE4 => bl -0x0001F99C /* 80243548 */
# region @ 804D0AE0 (4 bytes)
.data 0x804D0AE0 # address
.data 0x00000004 # size
.data 0x42640000 # 804D0AE0 => bc 19, 4, +0x00000000 /* 804D0AE0 */
# region @ 804D0AEC (4 bytes)
.data 0x804D0AEC # address
.data 0x00000004 # size
.data 0x42640000 # 804D0AEC => bc 19, 4, +0x00000000 /* 804D0AEC */
# region @ 804D0AF8 (4 bytes)
.data 0x804D0AF8 # address
.data 0x00000004 # size
.data 0x42640000 # 804D0AF8 => bc 19, 4, +0x00000000 /* 804D0AF8 */
# region @ 804D0B04 (4 bytes)
.data 0x804D0B04 # address
.data 0x00000004 # size
.data 0x42640000 # 804D0B04 => bc 19, 4, +0x00000000 /* 804D0B04 */
# region @ 804D0BA0 (4 bytes)
.data 0x804D0BA0 # address
.data 0x00000004 # size
.data 0x42300000 # 804D0BA0 => bdnz cr4, +0x00000000 /* 804D0BA0 */
# region @ 804D0BBC (4 bytes)
.data 0x804D0BBC # address
.data 0x00000004 # size
.data 0xFF00FF15 # 804D0BBC => .invalid FC, 0
# region @ 805DDA5C (4 bytes)
.data 0x805DDA5C # address
.data 0x00000004 # size
.data 0x42A00000 # 805DDA5C => b +0x00000000 /* 805DDA5C */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,44 @@
.meta name="Enemy HP bars"
.meta description="Show HP bars in\nenemy info windows"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 80262C98 (4 bytes)
.data 0x80262C98 # address
.data 0x00000004 # size
.data 0x4BFE1241 # 80262C98 => bl -0x0001EDC0 /* 80243ED8 */
# region @ 804D0880 (4 bytes)
.data 0x804D0880 # address
.data 0x00000004 # size
.data 0x42640000 # 804D0880 => bc 19, 4, +0x00000000 /* 804D0880 */
# region @ 804D088C (4 bytes)
.data 0x804D088C # address
.data 0x00000004 # size
.data 0x42640000 # 804D088C => bc 19, 4, +0x00000000 /* 804D088C */
# region @ 804D0898 (4 bytes)
.data 0x804D0898 # address
.data 0x00000004 # size
.data 0x42640000 # 804D0898 => bc 19, 4, +0x00000000 /* 804D0898 */
# region @ 804D08A4 (4 bytes)
.data 0x804D08A4 # address
.data 0x00000004 # size
.data 0x42640000 # 804D08A4 => bc 19, 4, +0x00000000 /* 804D08A4 */
# region @ 804D0940 (4 bytes)
.data 0x804D0940 # address
.data 0x00000004 # size
.data 0x42300000 # 804D0940 => bdnz cr4, +0x00000000 /* 804D0940 */
# region @ 804D095C (4 bytes)
.data 0x804D095C # address
.data 0x00000004 # size
.data 0xFF00FF15 # 804D095C => .invalid FC, 0
# region @ 805DD7FC (4 bytes)
.data 0x805DD7FC # address
.data 0x00000004 # size
.data 0x42A00000 # 805DD7FC => b +0x00000000 /* 805DD7FC */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,44 @@
.meta name="Enemy HP bars"
.meta description="Show HP bars in\nenemy info windows"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 802627A4 (4 bytes)
.data 0x802627A4 # address
.data 0x00000004 # size
.data 0x4BFE12B1 # 802627A4 => bl -0x0001ED50 /* 80243A54 */
# region @ 804D0548 (4 bytes)
.data 0x804D0548 # address
.data 0x00000004 # size
.data 0x42640000 # 804D0548 => bc 19, 4, +0x00000000 /* 804D0548 */
# region @ 804D0554 (4 bytes)
.data 0x804D0554 # address
.data 0x00000004 # size
.data 0x42640000 # 804D0554 => bc 19, 4, +0x00000000 /* 804D0554 */
# region @ 804D0560 (4 bytes)
.data 0x804D0560 # address
.data 0x00000004 # size
.data 0x42640000 # 804D0560 => bc 19, 4, +0x00000000 /* 804D0560 */
# region @ 804D056C (4 bytes)
.data 0x804D056C # address
.data 0x00000004 # size
.data 0x42640000 # 804D056C => bc 19, 4, +0x00000000 /* 804D056C */
# region @ 804D0608 (4 bytes)
.data 0x804D0608 # address
.data 0x00000004 # size
.data 0x42300000 # 804D0608 => bdnz cr4, +0x00000000 /* 804D0608 */
# region @ 804D0624 (4 bytes)
.data 0x804D0624 # address
.data 0x00000004 # size
.data 0xFF00FF15 # 804D0624 => .invalid FC, 0
# region @ 805D9344 (4 bytes)
.data 0x805D9344 # address
.data 0x00000004 # size
.data 0x42A00000 # 805D9344 => b +0x00000000 /* 805D9344 */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,7 @@
lis r4, 0x4750
ori r4, r4, 0x5345 # 'GPSE'
lis r5, 0x8000
lwz r5, [r5]
li r3, -1
cmp r4, r5
bnelr
@@ -0,0 +1,351 @@
# There is a buffer overflow bug in PSO Episode 3 that this program uses to
# achieve arbitrary code execution. (This bug is likely present in all versions
# of PSO, but the code here is specific to the USA version of Episode 3.) This
# is only necessary because the non-Japanese versions of Episode 3 lack the B2
# command, which is used on other console PSO versions to send patches and other
# bits of code. Here, we use a buffer overflow bug to re-implement the B2
# command, which allows the server to treat PSO Episode 3 like any other version
# of PSO with respect to patching or loading DOL files.
# For some background, PSO sends download quest files via the A6 and A7
# commands. The A6 command is used to start sending a download quest file; it
# includes the quest name, file name, and total file size. The A7 command is
# used to send a chunk of 1KB (0x400 bytes) of data, or less if it's the final
# chunk of the file. When the client receives an A6 command for a filename
# ending in .bin, it allocates a buffer of (file size + 0x48) bytes. When it
# later receives an A7 command, it copies (cmd.data_size) bytes from the command
# to position (8 + 0x100 * flag) in the buffer, then if cmd.data_size was less
# than 0x400, it marks the file as done and postprocesses it.
# However, the client neglects to check if the last chunk overflows the end of
# the buffer before copying the chunk data. In this function, we send an A6
# command with an overall file size of only 0x18 bytes, then we send a chunk of
# 0x200 or so bytes (the compiled size of the code in this file), which
# overflows past the end of the allocated buffer and overwrites part of a free
# block after the allocated buffer. The memory allocator library keeps some of
# its bookkeeping structures at the beginning of this free block, which we use
# to cause the next call to malloc() to overwrite its own return address on the
# stack. Conveniently, this call happens soon afterward, during the
# postprocessing step.
# The PSO memory allocator is a simple free-list allocator. The allocator
# maintains two linked lists of blocks: one for allocated blocks and one for
# free blocks. The list of free blocks is sorted in order of memory address, but
# the list of allocated blocks is sorted in the order they were allocated. (The
# order of the allocated block list does not matter for the allocator's
# performance or correctness.)
# Each block begins with two pointers, prev and next, which point to other
# blocks in the allocated or free list. (As with a typical doubly-linked list,
# the first block has prev == nullptr and the last block has next == nullptr;
# there is no sentinel node on either end.) After these two pointers is the
# block's size in bytes, followed by 0x14 unused bytes. The block data
# immediately follows this 0x20-byte header structure. All block sizes are
# rounded up to a multiple of 0x20 bytes.
# The malloc() routine simply searches for the first free block that has enough
# space to satisfy the request, and either splits it into an allocated and a
# free block (if the free block's size is at least 0x40 bytes more than the
# requested size), or converts the free block entirely into an allocated block
# and returns it. It is the second case that we take advantage of here.
# When we send our A7 command containing this program, the first 0x58 bytes of
# it fill the quest file data buffer. The next 0x0C bytes of it overwrite the
# header fields of the following free block (noted below in the comments), and
# the remainder of the data goes into that block's unused header fields and the
# block's data (which is also otherwise unused, since it is a free block). We
# overwrite the free block's prev and next pointers with specific nonzero values
# and overwrite the size with the exact size that the caller will request, so we
# trigger the malloc() case that does not split the free block. When that code
# attempts to remove the free block from its doubly-linked list, it writes
# block->next to block->prev->next and block->prev to block->next->prev. We set
# block->prev to the address where we want execution to jump to (the start label
# here), and block->next to the address of malloc()'s return address on the
# stack. This overwrites the return address with the start label's address, and
# overwrites the word after the start label with an address within the stack. We
# can't avoid this second write since both pointers must be non-null and the
# values and addresses written are dependent on each other, but we can just use
# a branch opcode to ignore the value that gets written into our code.
# Once we have control, we clean up the allocator state (restoring the free
# block as it was before we overwrote its header), then copy our implementation
# of the B2 command to an otherwise-unused area of memory and apply a few more
# patches. See the comments within the code below for more details.
# This entry_ptr label isn't used since this code isn't sent with the B2
# command; it just needs to be present for newserv to compile the code properly
entry_ptr:
start:
b resume1
# This is the value overwritten by malloc() when it attempts to remove the
# free block from its linked list
.data 0xAAAAAAAA
resume1:
# We can use any of the caller-save registers (r0, r3-r12) here.
# At entry time, some registers contain useful values:
# r5: Address of the allocator instance ("lists"). This structure includes the
# allocated and free list head pointers, one of which we have to update.
# r12: Address of the malloc() function that was called. Conveniently, the
# address that we should return to is very near this location in memory.
# Compute the LR we should use to return from this function, but don't put it
# in the LR just yet - we're still going to need the LR for other shenanigans
subi r11, r12, 0xB0 # 8038C1B8 - B0 = 8038C108
# Restore the free block whose header we had destroyed with the A7 command
# buffer overflow
lis r7, 0x815F
ori r7, r7, 0xF440
li r0, 0
stw [r7], r0 # free_block->prev = nullptr
stw [r7 + 4], r0 # free_block->next = nullptr
lis r6, 0x001E
ori r6, r6, 0x0960
stw [r7 + 8], r6 # free_block->size = 0x001E0960
stw [r5 + 4], r7 # lists->free_head = free_block
# Restore lists->allocated_head and clear its prev pointer
lis r6, 0x815F
ori r6, r6, 0xF3C0
stw [r5 + 8], r6 # lists->allocated_head = orig_allocated_head
stw [r6], r0 # lists->allocated_head->prev = nullptr
b resume2
# TODO: We can probably use this space for something useful. There must be
# exactly 20 opcodes (0x50 bytes) between resume1 and opaque2.
.zero
.zero
.zero
.zero
.zero
opaque2:
# This block must be exactly here (the number of opcodes above is exactly how
# many will fit in the original buffer), and the 3 words here must have
# exactly these values. This is what causes malloc to overwrite the return
# address on the stack to call this code in the first place.
.data 0x815FF3E8 # free_head->prev
.data 0x80592AC4 # free_head->next
.data 0x00000160 # free_head->size
resume2:
bl get_handle_B2_ptr
# This is the code we're going to use for the B2 command handler, which we
# will copy into an unused area of memory. It's convenient to put it here and
# use a bl opcode to get its address, so this code can be minimally position-
# dependent. Note that this part of the code does not run at the time the A7
# command is received; it will run later if the client receives a B2 command.
handle_B2:
mflr r0
stwu [r1 - 0x40], r1
stw [r1 + 0x44], r0
# Arguments:
# r3 = TProtocol* proto (we use this to call the send function)
# r4 = void* data
# Returns: void
# Stack:
# [r1+08] = B3 XX 0C 00
# [r1+0C] = code section's return value
# [r1+10] = checksum
# [r1+14] = saved ctx argument
# [r1+18] = saved data argument
# We reserved 0x40 bytes on the stack because I was lazy.
stw [r1 + 0x14], r3
stw [r1 + 0x18], r4
# Set up the reply header (B3 XX 0C 00, where XX comes from the B2 command)
lbz r5, [r4 + 1]
rlwinm r5, r5, 16, 8, 15
oris r5, r5, 0xB300
ori r5, r5, 0x0C00
stw [r1 + 0x08], r5
# If there's no code section, skip it. We also write the code section size to
# the return value field (which will be overwritten later if the size is not
# zero). This is because I'm lazy and this gives the behavior we want: the
# code return value is always zero if the code section size is zero.
li r6, 4
lwbrx r5, [r4 + r6] # r5 = code_size
stw [r1 + 0x0C], r5 # response.code_return_value = code_size
cmplwi r5, 0
beq handle_B2_skip_code
# Get the code section base and footer addresses
addi r6, r4, 0x10 # r6 = code base address
add r7, r6, r5
subi r7, r7, 0x20 # r7 = footer address (code base + code size - 0x20)
# Check if there are relocations to do
lwz r8, [r7 + 4] # r8 = num relocations
cmplwi r8, 0
beq handle_B2_skip_relocations
# Execute the relocations
mtctr r8
lwz r8, [r7] # r8 = relocations list offset
add r8, r8, r6 # r8 = relocations list address
subi r8, r8, 2 # Back up one space so we can use lhzu in the loop
mr r10, r6 # relocation pointer = code base address
handle_B2_relocate_again:
lhzu r9, [r8 + 2]
rlwinm r9, r9, 2, 0, 29 # r9 = next_relocation_offset * 4
add r10, r10, r9 # relocation pointer += next_relocation_offset * 4
lwz r9, [r10]
add r9, r9, r6
stw [r10], r9 # (*relocation pointer) += code base address
bdnz handle_B2_relocate_again
handle_B2_skip_relocations:
# Invalidate the caches appropriately for the newly-copied code
lis r0, 0x8000
ori r0, r0, 0xC324
mr r3, r6
mr r4, r5
mtctr r0
bctrl # flush_code(code_base_addr, code_section_size)
# Call the code section and put the return value (byteswapped) on the stack
# Note: flush_code only uses r3, r4, and r5, so we don't need to reload r7
# after the above call
lwz r8, [r7 + 0x10]
lwzx r8, [r8 + r6]
mtctr r8
bctrl
li r8, 0x0C
stwbrx [r1 + r8], r3
handle_B2_skip_code:
# Get the checksum function args
lwz r4, [r1 + 0x18]
li r5, 0x08
lwbrx r3, [r4 + r5] # checksum addr
li r5, 0x0C
lwbrx r4, [r4 + r5] # checksum size
lis r0, 0x8010
ori r0, r0, 0xF834
mtctr r0
bctrl # crc32(checksum_addr, checksum_size)
li r8, 0x10
stwbrx [r1 + r8], r3
# Send the response (B3 command)
lwz r3, [r1 + 0x14]
lwz r4, [r3 + 0x18]
lwz r4, [r4 + 0x28]
mtctr r4
addi r4, r1, 0x08
li r5, 0x0C
bctrl # TProtocol::send_command(ctx, &reply_data, 0x0C)
# Clean up stack and return
lwz r0, [r1 + 0x44]
addi r1, r1, 0x40
mtlr r0
blr
get_handle_B2_ptr:
mflr r9 # r9 = &handle_B2
bl get_handle_B2_end_ptr
get_handle_B2_end_ptr:
mflr r10
subi r10, r10, 8 # r10 = pointer to end of handle_B2
# Copy handle_B2 to 8000BD80, which is normally unused by the game
lis r12, 0x8000
ori r12, r12, 0xBD80 # r12 = 0x8000BD80
sub r7, r10, r9
rlwinm r7, r7, 30, 2, 31 # r7 = number of words to copy
mtctr r7
subi r8, r12, 4 # r8 = r12 - 4 (so we can use stwu)
subi r9, r9, 4 # r9 = r9 - 4 (so we can use lwzu)
copy_handle_B2_word_again:
lwzu r0, [r9 + 4]
stwu [r8 + 4], r0
bdnz copy_handle_B2_word_again
# Invalidate the caches appropriately for the newly-copied code
lis r9, 0x8000
ori r9, r9, 0xC324
mtctr r9
mr r3, r12
rlwinm r4, r7, 2, 0, 29
bctrl # flush_code(copied_B2_handler, copied_B2_handler_bytes)
# Replace the command handler table entry for command 0E (which appears to be
# a legacy command and has very broken behavior) with our B2 implementation
lis r5, 0x8044
ori r5, r5, 0xF684
li r0, 0x00B2
stw [r5], r0
stw [r5 + 0x0C], r12
# Patch both places in the code where command 9E is sent to make them include
# a sentinel value that newserv can use to determine if the client has already
# run the code in this file
bl get_patch_9E_1_ptr
patch_9E_1:
lis r4, 0x5F5C
ori r4, r4, 0xA297
stw [r1 + 0x14], r4 # Set cmd.unused1 to 0x5F5CA297 (in send_9E_long)
get_patch_9E_1_ptr:
lis r3, 0x800F
ori r3, r3, 0x3338
mflr r4
lwz r0, [r4]
stw [r3], r0
lwz r0, [r4 + 4]
stw [r3 + 4], r0
lwz r0, [r4 + 8]
stw [r3 + 8], r0
li r4, 0x20
mtctr r9
bctrl # flush_code(patch_9E_1_dest, 0x20)
bl get_patch_9E_2_ptr
patch_9E_2:
lis r4, 0x5F5C
ori r4, r4, 0xA297
stw [r1 + 0x60], r4 # Set cmd.unused1 to 0x5F5CA297 (in handle_02)
get_patch_9E_2_ptr:
lis r3, 0x800F
ori r3, r3, 0x3644
mflr r4
lwz r0, [r4]
stw [r3], r0
lwz r0, [r4 + 4]
stw [r3 + 4], r0
lwz r0, [r4 + 8]
stw [r3 + 8], r0
li r4, 0x20
mtctr r9
bctrl # flush_code(patch_9E_2_dest, 0x20)
# Finally, patch the A7 handler function (which is on the current callstack)
# so that it does nothing else if this function returns null, which prevents
# further memory corruption. This changes a beq opcode (which never triggers
# under normal circumstances) to skip a couple more function calls, one of
# which would cause memory corruption if executed because the original buffer
# is smaller than 0x100 bytes.
lis r3, 0x8010
ori r3, r3, 0xFD8A
li r4, 0x0064
sth [r3], r4
rlwinm r3, r3, 0, 0, 27
li r4, 0x20
mtctr r9
bctrl # flush_code(patched_opcode_address & 0xFFFFFFF0, 0x20)
# Return null instead of a malloc'ed block, which triggers the conditional
# branch we just patched above
li r3, 0
mtlr r11
blr
@@ -0,0 +1,20 @@
# This code flushes the data cache and invalidates the instruction cache for a
# block of newly-written code in memory.
# Arguments:
# r3 = address of written code
# r4 = number of bytes
# Returns: nothing
# Overwrites: r3, r4, r5
lis r5, 0xFFFF
ori r5, r5, 0xFFF1
and r5, r5, r3
subf r3, r5, r3
add r4, r4, r3
flush_cached_code_writes__again:
dcbst r0, r5
sync
icbi r0, r5
addic r5, r5, 8
subic. r4, r4, 8
bge flush_cached_code_writes__again
isync
@@ -0,0 +1,30 @@
.meta name="MAG alert"
.meta description="Play a sound when\nyour MAG is hungry"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000BF30 (44 bytes)
.data 0x8000BF30 # address
.data 0x0000002C # size
.data 0x9421FFF0 # 8000BF30 => stwu [r1 - 0x0010], r1
.data 0x7C0802A6 # 8000BF34 => mflr r0
.data 0x90010014 # 8000BF38 => stw [r1 + 0x0014], r0
.data 0x3C600002 # 8000BF3C => lis r3, 0x0002
.data 0x60632825 # 8000BF40 => ori r3, r3, 0x2825
.data 0x38800000 # 8000BF44 => li r4, 0x0000
.data 0x48027985 # 8000BF48 => bl +0x00027984 /* 800338CC */
.data 0x80010014 # 8000BF4C => lwz r0, [r1 + 0x0014]
.data 0x7C0803A6 # 8000BF50 => mtlr r0
.data 0x38210010 # 8000BF54 => addi r1, r1, 0x0010
.data 0x4E800020 # 8000BF58 => blr
# region @ 80111038 (4 bytes)
.data 0x80111038 # address
.data 0x00000004 # size
.data 0x4BEFAEF8 # 80111038 => b -0x00105108 /* 8000BF30 */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,30 @@
.meta name="MAG alert"
.meta description="Play a sound when\nyour MAG is hungry"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000BF30 (44 bytes)
.data 0x8000BF30 # address
.data 0x0000002C # size
.data 0x9421FFF0 # 8000BF30 => stwu [r1 - 0x0010], r1
.data 0x7C0802A6 # 8000BF34 => mflr r0
.data 0x90010014 # 8000BF38 => stw [r1 + 0x0014], r0
.data 0x3C600002 # 8000BF3C => lis r3, 0x0002
.data 0x60632825 # 8000BF40 => ori r3, r3, 0x2825
.data 0x38800000 # 8000BF44 => li r4, 0x0000
.data 0x48027985 # 8000BF48 => bl +0x00027984 /* 800338CC */
.data 0x80010014 # 8000BF4C => lwz r0, [r1 + 0x0014]
.data 0x7C0803A6 # 8000BF50 => mtlr r0
.data 0x38210010 # 8000BF54 => addi r1, r1, 0x0010
.data 0x4E800020 # 8000BF58 => blr
# region @ 80111038 (4 bytes)
.data 0x80111038 # address
.data 0x00000004 # size
.data 0x4BEFAEF8 # 80111038 => b -0x00105108 /* 8000BF30 */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,30 @@
.meta name="MAG alert"
.meta description="Play a sound when\nyour MAG is hungry"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000BF30 (44 bytes)
.data 0x8000BF30 # address
.data 0x0000002C # size
.data 0x9421FFF0 # 8000BF30 => stwu [r1 - 0x0010], r1
.data 0x7C0802A6 # 8000BF34 => mflr r0
.data 0x90010014 # 8000BF38 => stw [r1 + 0x0014], r0
.data 0x3C600002 # 8000BF3C => lis r3, 0x0002
.data 0x60632825 # 8000BF40 => ori r3, r3, 0x2825
.data 0x38800000 # 8000BF44 => li r4, 0x0000
.data 0x4802794D # 8000BF48 => bl +0x0002794C /* 80033894 */
.data 0x80010014 # 8000BF4C => lwz r0, [r1 + 0x0014]
.data 0x7C0803A6 # 8000BF50 => mtlr r0
.data 0x38210010 # 8000BF54 => addi r1, r1, 0x0010
.data 0x4E800020 # 8000BF58 => blr
# region @ 80110F30 (4 bytes)
.data 0x80110F30 # address
.data 0x00000004 # size
.data 0x4BEFB000 # 80110F30 => b -0x00105000 /* 8000BF30 */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,30 @@
.meta name="MAG alert"
.meta description="Play a sound when\nyour MAG is hungry"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000BF30 (44 bytes)
.data 0x8000BF30 # address
.data 0x0000002C # size
.data 0x9421FFF0 # 8000BF30 => stwu [r1 - 0x0010], r1
.data 0x7C0802A6 # 8000BF34 => mflr r0
.data 0x90010014 # 8000BF38 => stw [r1 + 0x0014], r0
.data 0x3C600002 # 8000BF3C => lis r3, 0x0002
.data 0x60632825 # 8000BF40 => ori r3, r3, 0x2825
.data 0x38800000 # 8000BF44 => li r4, 0x0000
.data 0x48027765 # 8000BF48 => bl +0x00027764 /* 800336AC */
.data 0x80010014 # 8000BF4C => lwz r0, [r1 + 0x0014]
.data 0x7C0803A6 # 8000BF50 => mtlr r0
.data 0x38210010 # 8000BF54 => addi r1, r1, 0x0010
.data 0x4E800020 # 8000BF58 => blr
# region @ 80110D94 (4 bytes)
.data 0x80110D94 # address
.data 0x00000004 # size
.data 0x4BEFB19C # 80110D94 => b -0x00104E64 /* 8000BF30 */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,30 @@
.meta name="MAG alert"
.meta description="Play a sound when\nyour MAG is hungry"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000BF30 (44 bytes)
.data 0x8000BF30 # address
.data 0x0000002C # size
.data 0x9421FFF0 # 8000BF30 => stwu [r1 - 0x0010], r1
.data 0x7C0802A6 # 8000BF34 => mflr r0
.data 0x90010014 # 8000BF38 => stw [r1 + 0x0014], r0
.data 0x3C600002 # 8000BF3C => lis r3, 0x0002
.data 0x60632825 # 8000BF40 => ori r3, r3, 0x2825
.data 0x38800000 # 8000BF44 => li r4, 0x0000
.data 0x48027795 # 8000BF48 => bl +0x00027794 /* 800336DC */
.data 0x80010014 # 8000BF4C => lwz r0, [r1 + 0x0014]
.data 0x7C0803A6 # 8000BF50 => mtlr r0
.data 0x38210010 # 8000BF54 => addi r1, r1, 0x0010
.data 0x4E800020 # 8000BF58 => blr
# region @ 80110F94 (4 bytes)
.data 0x80110F94 # address
.data 0x00000004 # size
.data 0x4BEFAF9C # 80110F94 => b -0x00105064 /* 8000BF30 */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,30 @@
.meta name="MAG alert"
.meta description="Play a sound when\nyour MAG is hungry"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000BF30 (44 bytes)
.data 0x8000BF30 # address
.data 0x0000002C # size
.data 0x9421FFF0 # 8000BF30 => stwu [r1 - 0x0010], r1
.data 0x7C0802A6 # 8000BF34 => mflr r0
.data 0x90010014 # 8000BF38 => stw [r1 + 0x0014], r0
.data 0x3C600002 # 8000BF3C => lis r3, 0x0002
.data 0x60632825 # 8000BF40 => ori r3, r3, 0x2825
.data 0x38800000 # 8000BF44 => li r4, 0x0000
.data 0x480277B1 # 8000BF48 => bl +0x000277B0 /* 800336F8 */
.data 0x80010014 # 8000BF4C => lwz r0, [r1 + 0x0014]
.data 0x7C0803A6 # 8000BF50 => mtlr r0
.data 0x38210010 # 8000BF54 => addi r1, r1, 0x0010
.data 0x4E800020 # 8000BF58 => blr
# region @ 80111080 (4 bytes)
.data 0x80111080 # address
.data 0x00000004 # size
.data 0x4BEFAEB0 # 80111080 => b -0x00105150 /* 8000BF30 */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,30 @@
.meta name="MAG alert"
.meta description="Play a sound when\nyour MAG is hungry"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000BF30 (44 bytes)
.data 0x8000BF30 # address
.data 0x0000002C # size
.data 0x9421FFF0 # 8000BF30 => stwu [r1 - 0x0010], r1
.data 0x7C0802A6 # 8000BF34 => mflr r0
.data 0x90010014 # 8000BF38 => stw [r1 + 0x0014], r0
.data 0x3C600002 # 8000BF3C => lis r3, 0x0002
.data 0x60632825 # 8000BF40 => ori r3, r3, 0x2825
.data 0x38800000 # 8000BF44 => li r4, 0x0000
.data 0x48027745 # 8000BF48 => bl +0x00027744 /* 8003368C */
.data 0x80010014 # 8000BF4C => lwz r0, [r1 + 0x0014]
.data 0x7C0803A6 # 8000BF50 => mtlr r0
.data 0x38210010 # 8000BF54 => addi r1, r1, 0x0010
.data 0x4E800020 # 8000BF58 => blr
# region @ 80110F20 (4 bytes)
.data 0x80110F20 # address
.data 0x00000004 # size
.data 0x4BEFB010 # 80110F20 => b -0x00104FF0 /* 8000BF30 */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,30 @@
.meta name="MAG alert"
.meta description="Play a sound when\nyour MAG is hungry"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8000BF30 (44 bytes)
.data 0x8000BF30 # address
.data 0x0000002C # size
.data 0x9421FFF0 # 8000BF30 => stwu [r1 - 0x0010], r1
.data 0x7C0802A6 # 8000BF34 => mflr r0
.data 0x90010014 # 8000BF38 => stw [r1 + 0x0014], r0
.data 0x3C600002 # 8000BF3C => lis r3, 0x0002
.data 0x60632825 # 8000BF40 => ori r3, r3, 0x2825
.data 0x38800000 # 8000BF44 => li r4, 0x0000
.data 0x480279C5 # 8000BF48 => bl +0x000279C4 /* 8003390C */
.data 0x80010014 # 8000BF4C => lwz r0, [r1 + 0x0014]
.data 0x7C0803A6 # 8000BF50 => mtlr r0
.data 0x38210010 # 8000BF54 => addi r1, r1, 0x0010
.data 0x4E800020 # 8000BF58 => blr
# region @ 80111114 (4 bytes)
.data 0x80111114 # address
.data 0x00000004 # size
.data 0x4BEFAE1C # 80111114 => b -0x001051E4 /* 8000BF30 */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,16 @@
.meta name="Invisible MAG"
.meta description="Make MAGs invisible"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 801151A8 (4 bytes)
.data 0x801151A8 # address
.data 0x00000004 # size
.data 0x480000D4 # 801151A8 => b +0x000000D4 /* 8011527C */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,16 @@
.meta name="Invisible MAG"
.meta description="Make MAGs invisible"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 801151A8 (4 bytes)
.data 0x801151A8 # address
.data 0x00000004 # size
.data 0x480000D4 # 801151A8 => b +0x000000D4 /* 8011527C */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,16 @@
.meta name="Invisible MAG"
.meta description="Make MAGs invisible"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 801150C0 (4 bytes)
.data 0x801150C0 # address
.data 0x00000004 # size
.data 0x480000D4 # 801150C0 => b +0x000000D4 /* 80115194 */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,16 @@
.meta name="Invisible MAG"
.meta description="Make MAGs invisible"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 80114F04 (4 bytes)
.data 0x80114F04 # address
.data 0x00000004 # size
.data 0x480000D4 # 80114F04 => b +0x000000D4 /* 80114FD8 */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,16 @@
.meta name="Invisible MAG"
.meta description="Make MAGs invisible"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 80115118 (4 bytes)
.data 0x80115118 # address
.data 0x00000004 # size
.data 0x480000D4 # 80115118 => b +0x000000D4 /* 801151EC */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,16 @@
.meta name="Invisible MAG"
.meta description="Make MAGs invisible"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 8011521C (4 bytes)
.data 0x8011521C # address
.data 0x00000004 # size
.data 0x480000D4 # 8011521C => b +0x000000D4 /* 801152F0 */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,16 @@
.meta name="Invisible MAG"
.meta description="Make MAGs invisible"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 801150B0 (4 bytes)
.data 0x801150B0 # address
.data 0x00000004 # size
.data 0x480000D4 # 801150B0 => b +0x000000D4 /* 80115184 */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,16 @@
.meta name="Invisible MAG"
.meta description="Make MAGs invisible"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 80115298 (4 bytes)
.data 0x80115298 # address
.data 0x00000004 # size
.data 0x480000D4 # 80115298 => b +0x000000D4 /* 8011536C */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,36 @@
.meta name="No item loss"
.meta description="Don't lose items if\nyou don't log off\nnormally"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 801D381C (4 bytes)
.data 0x801D381C # address
.data 0x00000004 # size
.data 0x4800004C # 801D381C => b +0x0000004C /* 801D3868 */
# region @ 801FF0FC (4 bytes)
.data 0x801FF0FC # address
.data 0x00000004 # size
.data 0x60000000 # 801FF0FC => nop
# region @ 80200658 (4 bytes)
.data 0x80200658 # address
.data 0x00000004 # size
.data 0x60000000 # 80200658 => nop
# region @ 802021C4 (4 bytes)
.data 0x802021C4 # address
.data 0x00000004 # size
.data 0x38000000 # 802021C4 => li r0, 0x0000
# region @ 802C2A40 (4 bytes)
.data 0x802C2A40 # address
.data 0x00000004 # size
.data 0x4800004C # 802C2A40 => b +0x0000004C /* 802C2A8C */
# region @ 802D1480 (4 bytes)
.data 0x802D1480 # address
.data 0x00000004 # size
.data 0x48000020 # 802D1480 => b +0x00000020 /* 802D14A0 */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,36 @@
.meta name="No item loss"
.meta description="Don't lose items if\nyou don't log off\nnormally"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 801D381C (4 bytes)
.data 0x801D381C # address
.data 0x00000004 # size
.data 0x4800004C # 801D381C => b +0x0000004C /* 801D3868 */
# region @ 801FF0FC (4 bytes)
.data 0x801FF0FC # address
.data 0x00000004 # size
.data 0x60000000 # 801FF0FC => nop
# region @ 80200658 (4 bytes)
.data 0x80200658 # address
.data 0x00000004 # size
.data 0x60000000 # 80200658 => nop
# region @ 802021C4 (4 bytes)
.data 0x802021C4 # address
.data 0x00000004 # size
.data 0x38000000 # 802021C4 => li r0, 0x0000
# region @ 802C2A84 (4 bytes)
.data 0x802C2A84 # address
.data 0x00000004 # size
.data 0x4800004C # 802C2A84 => b +0x0000004C /* 802C2AD0 */
# region @ 802D14C4 (4 bytes)
.data 0x802D14C4 # address
.data 0x00000004 # size
.data 0x48000020 # 802D14C4 => b +0x00000020 /* 802D14E4 */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,36 @@
.meta name="No item loss"
.meta description="Don't lose items if\nyou don't log off\nnormally"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 801D3A1C (4 bytes)
.data 0x801D3A1C # address
.data 0x00000004 # size
.data 0x4800004C # 801D3A1C => b +0x0000004C /* 801D3A68 */
# region @ 801FFA44 (4 bytes)
.data 0x801FFA44 # address
.data 0x00000004 # size
.data 0x60000000 # 801FFA44 => nop
# region @ 80200FD0 (4 bytes)
.data 0x80200FD0 # address
.data 0x00000004 # size
.data 0x60000000 # 80200FD0 => nop
# region @ 80202B94 (4 bytes)
.data 0x80202B94 # address
.data 0x00000004 # size
.data 0x38000000 # 80202B94 => li r0, 0x0000
# region @ 802C402C (4 bytes)
.data 0x802C402C # address
.data 0x00000004 # size
.data 0x4800004C # 802C402C => b +0x0000004C /* 802C4078 */
# region @ 802D2AEC (4 bytes)
.data 0x802D2AEC # address
.data 0x00000004 # size
.data 0x48000020 # 802D2AEC => b +0x00000020 /* 802D2B0C */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,24 @@
.meta name="No item loss"
.meta description="Don't lose items if\nyou don't log off\nnormally"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 801D33E4 (4 bytes)
.data 0x801D33E4 # address
.data 0x00000004 # size
.data 0x4800004C # 801D33E4 => b +0x0000004C /* 801D3430 */
# region @ 802C2060 (4 bytes)
.data 0x802C2060 # address
.data 0x00000004 # size
.data 0x4800004C # 802C2060 => b +0x0000004C /* 802C20AC */
# region @ 802D0AA0 (4 bytes)
.data 0x802D0AA0 # address
.data 0x00000004 # size
.data 0x48000020 # 802D0AA0 => b +0x00000020 /* 802D0AC0 */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,24 @@
.meta name="No item loss"
.meta description="Don't lose items if\nyou don't log off\nnormally"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 801D38EC (4 bytes)
.data 0x801D38EC # address
.data 0x00000004 # size
.data 0x4800004C # 801D38EC => b +0x0000004C /* 801D3938 */
# region @ 802C2F98 (4 bytes)
.data 0x802C2F98 # address
.data 0x00000004 # size
.data 0x4800004C # 802C2F98 => b +0x0000004C /* 802C2FE4 */
# region @ 802D1A58 (4 bytes)
.data 0x802D1A58 # address
.data 0x00000004 # size
.data 0x48000020 # 802D1A58 => b +0x00000020 /* 802D1A78 */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,36 @@
.meta name="No item loss"
.meta description="Don't lose items if\nyou don't log off\nnormally"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 801D3CC4 (4 bytes)
.data 0x801D3CC4 # address
.data 0x00000004 # size
.data 0x4800004C # 801D3CC4 => b +0x0000004C /* 801D3D10 */
# region @ 801FD944 (4 bytes)
.data 0x801FD944 # address
.data 0x00000004 # size
.data 0x38000000 # 801FD944 => li r0, 0x0000
# region @ 8020010C (4 bytes)
.data 0x8020010C # address
.data 0x00000004 # size
.data 0x60000000 # 8020010C => nop
# region @ 802016CC (4 bytes)
.data 0x802016CC # address
.data 0x00000004 # size
.data 0x60000000 # 802016CC => nop
# region @ 802C42E4 (4 bytes)
.data 0x802C42E4 # address
.data 0x00000004 # size
.data 0x4800004C # 802C42E4 => b +0x0000004C /* 802C4330 */
# region @ 802D2C10 (4 bytes)
.data 0x802D2C10 # address
.data 0x00000004 # size
.data 0x48000020 # 802D2C10 => b +0x00000020 /* 802D2C30 */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,36 @@
.meta name="No item loss"
.meta description="Don't lose items if\nyou don't log off\nnormally"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 801D39B8 (4 bytes)
.data 0x801D39B8 # address
.data 0x00000004 # size
.data 0x4800004C # 801D39B8 => b +0x0000004C /* 801D3A04 */
# region @ 801FF710 (4 bytes)
.data 0x801FF710 # address
.data 0x00000004 # size
.data 0x60000000 # 801FF710 => nop
# region @ 80200C9C (4 bytes)
.data 0x80200C9C # address
.data 0x00000004 # size
.data 0x60000000 # 80200C9C => nop
# region @ 80202860 (4 bytes)
.data 0x80202860 # address
.data 0x00000004 # size
.data 0x38000000 # 80202860 => li r0, 0x0000
# region @ 802C3E78 (4 bytes)
.data 0x802C3E78 # address
.data 0x00000004 # size
.data 0x4800004C # 802C3E78 => b +0x0000004C /* 802C3EC4 */
# region @ 802D2938 (4 bytes)
.data 0x802D2938 # address
.data 0x00000004 # size
.data 0x48000020 # 802D2938 => b +0x00000020 /* 802D2958 */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,36 @@
.meta name="No item loss"
.meta description="Don't lose items if\nyou don't log off\nnormally"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 801D3ED8 (4 bytes)
.data 0x801D3ED8 # address
.data 0x00000004 # size
.data 0x4800004C # 801D3ED8 => b +0x0000004C /* 801D3F24 */
# region @ 801FF9E0 (4 bytes)
.data 0x801FF9E0 # address
.data 0x00000004 # size
.data 0x60000000 # 801FF9E0 => nop
# region @ 80200F3C (4 bytes)
.data 0x80200F3C # address
.data 0x00000004 # size
.data 0x60000000 # 80200F3C => nop
# region @ 80202AA8 (4 bytes)
.data 0x80202AA8 # address
.data 0x00000004 # size
.data 0x38000000 # 80202AA8 => li r0, 0x0000
# region @ 802C37C0 (4 bytes)
.data 0x802C37C0 # address
.data 0x00000004 # size
.data 0x4800004C # 802C37C0 => b +0x0000004C /* 802C380C */
# region @ 802D2280 (4 bytes)
.data 0x802D2280 # address
.data 0x00000004 # size
.data 0x48000020 # 802D2280 => b +0x00000020 /* 802D22A0 */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,66 @@
.meta name="No item loss"
.meta description="Don't lose items if\nyou don't log off\nnormally"
# Original code by Ralf @ GC-Forever; Xbox port by fuzziqersoftware
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksXB
.data 0x000D1B85
.data 0x00000001
.binary 00
.data 0x000D1BFC
.data 0x00000002
.binary EB08
.data 0x0020E805
.data 0x00000001
.binary EB
.data 0x002119CA
.data 0x00000002
.binary EB74
.data 0x002291B5
.data 0x00000002
.binary 9090
.data 0x00229237
.data 0x00000002
.binary EB08
.data 0x0022A222
.data 0x00000002
.binary 9090
.data 0x0022A29B
.data 0x00000002
.binary EB08
.data 0x0022BF35
.data 0x00000001
.binary 00
.data 0x0022BF6E
.data 0x00000002
.binary EB08
.data 0x0022C2E6
.data 0x00000001
.binary 00
.data 0x002418E8
.data 0x00000001
.binary 00
.data 0x0024195C
.data 0x00000002
.binary EB08
.data 0x002A2904
.data 0x00000001
.binary 00
.data 0x002A297C
.data 0x00000002
.binary EB08
.data 0x002D677A
.data 0x00000001
.binary 00
.data 0x002D67ED
.data 0x00000002
.binary EB08
.data 0x002F0E1E
.data 0x00000001
.binary EB
.data 0x00000000
.data 0x00000000
@@ -0,0 +1,63 @@
.meta name="No item loss"
.meta description="Don't lose items if\nyou don't log off\nnormally"
# Original code by Ralf @ GC-Forever; Xbox port by fuzziqersoftware
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksXB
.data 0x000D1BD5
.data 0x00000001
.binary 00
.data 0x000D1C4C
.data 0x00000002
.binary EB08
.data 0x0020E805
.data 0x00000001
.binary EB
.data 0x00211A2A
.data 0x00000002
.binary EB74
.data 0x00229255
.data 0x00000002
.binary 9090
.data 0x002292D7
.data 0x00000002
.binary EB08
.data 0x0022A2C2
.data 0x00000002
.binary 9090
.data 0x0022A33B
.data 0x00000002
.binary EB08
.data 0x0022BFD5
.data 0x00000001
.binary 00
.data 0x0022C00E
.data 0x00000002
.binary EB08
.data 0x0022C386
.data 0x00000001
.binary 00
.data 0x00241A78
.data 0x00000001
.binary 00
.data 0x00241AEC
.data 0x00000002
.binary EB08
.data 0x002A2BAC
.data 0x00000002
.binary EB08
.data 0x002D6C8A
.data 0x00000001
.binary 00
.data 0x002D6CFD
.data 0x00000002
.binary EB08
.data 0x002F0FCE
.data 0x00000001
.binary EB
.data 0x00000000
.data 0x00000000
@@ -0,0 +1,20 @@
.meta name="Movement"
.meta description="Allow backsteps and\nmovement when enemies\nare nearby"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 801CEBF0 (4 bytes)
.data 0x801CEBF0 # address
.data 0x00000004 # size
.data 0x4800000C # 801CEBF0 => b +0x0000000C /* 801CEBFC */
# region @ 801CFAE0 (4 bytes)
.data 0x801CFAE0 # address
.data 0x00000004 # size
.data 0x48000014 # 801CFAE0 => b +0x00000014 /* 801CFAF4 */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,20 @@
.meta name="Movement"
.meta description="Allow backsteps and\nmovement when enemies\nare nearby"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 801CEBF0 (4 bytes)
.data 0x801CEBF0 # address
.data 0x00000004 # size
.data 0x4800000C # 801CEBF0 => b +0x0000000C /* 801CEBFC */
# region @ 801CFAE0 (4 bytes)
.data 0x801CFAE0 # address
.data 0x00000004 # size
.data 0x48000014 # 801CFAE0 => b +0x00000014 /* 801CFAF4 */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,20 @@
.meta name="Movement"
.meta description="Allow backsteps and\nmovement when enemies\nare nearby"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 801CEDF0 (4 bytes)
.data 0x801CEDF0 # address
.data 0x00000004 # size
.data 0x4800000C # 801CEDF0 => b +0x0000000C /* 801CEDFC */
# region @ 801CFCE0 (4 bytes)
.data 0x801CFCE0 # address
.data 0x00000004 # size
.data 0x48000014 # 801CFCE0 => b +0x00000014 /* 801CFCF4 */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,20 @@
.meta name="Movement"
.meta description="Allow backsteps and\nmovement when enemies\nare nearby"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 801CE7AC (4 bytes)
.data 0x801CE7AC # address
.data 0x00000004 # size
.data 0x4800000C # 801CE7AC => b +0x0000000C /* 801CE7B8 */
# region @ 801CF69C (4 bytes)
.data 0x801CF69C # address
.data 0x00000004 # size
.data 0x48000014 # 801CF69C => b +0x00000014 /* 801CF6B0 */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,20 @@
.meta name="Movement"
.meta description="Allow backsteps and\nmovement when enemies\nare nearby"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 801CECC0 (4 bytes)
.data 0x801CECC0 # address
.data 0x00000004 # size
.data 0x4800000C # 801CECC0 => b +0x0000000C /* 801CECCC */
# region @ 801CFBB0 (4 bytes)
.data 0x801CFBB0 # address
.data 0x00000004 # size
.data 0x48000014 # 801CFBB0 => b +0x00000014 /* 801CFBC4 */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,20 @@
.meta name="Movement"
.meta description="Allow backsteps and\nmovement when enemies\nare nearby"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 801D0D10 (4 bytes)
.data 0x801D0D10 # address
.data 0x00000004 # size
.data 0x4800000C # 801D0D10 => b +0x0000000C /* 801D0D1C */
# region @ 801D1CEC (4 bytes)
.data 0x801D1CEC # address
.data 0x00000004 # size
.data 0x48000014 # 801D1CEC => b +0x00000014 /* 801D1D00 */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,20 @@
.meta name="Movement"
.meta description="Allow backsteps and\nmovement when enemies\nare nearby"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 801CED8C (4 bytes)
.data 0x801CED8C # address
.data 0x00000004 # size
.data 0x4800000C # 801CED8C => b +0x0000000C /* 801CED98 */
# region @ 801CFC7C (4 bytes)
.data 0x801CFC7C # address
.data 0x00000004 # size
.data 0x48000014 # 801CFC7C => b +0x00000014 /* 801CFC90 */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size
@@ -0,0 +1,20 @@
.meta name="Movement"
.meta description="Allow backsteps and\nmovement when enemies\nare nearby"
# Original code by Ralf @ GC-Forever
entry_ptr:
reloc0:
.offsetof start
start:
.include WriteCodeBlocksGC
# region @ 801CF2AC (4 bytes)
.data 0x801CF2AC # address
.data 0x00000004 # size
.data 0x4800000C # 801CF2AC => b +0x0000000C /* 801CF2B8 */
# region @ 801D019C (4 bytes)
.data 0x801D019C # address
.data 0x00000004 # size
.data 0x48000014 # 801D019C => b +0x00000014 /* 801D01B0 */
# end sentinel
.data 0x00000000 # address
.data 0x00000000 # size

Some files were not shown because too many files have changed in this diff Show More