berry_fix_program
This commit is contained in:
@@ -1,344 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_815F6E0
|
||||
sub_815F6E0: @ 815F6E0
|
||||
push {r4-r6,lr}
|
||||
movs r6, 0x80
|
||||
lsls r6, 19
|
||||
movs r2, 0
|
||||
strh r2, [r6]
|
||||
ldr r1, _0815F73C @ =0x04000010
|
||||
strh r2, [r1]
|
||||
adds r1, 0x2
|
||||
strh r2, [r1]
|
||||
adds r1, 0x3E
|
||||
strh r2, [r1]
|
||||
ldr r5, _0815F740 @ =gUnknown_847A890
|
||||
lsls r4, r0, 1
|
||||
adds r4, r0
|
||||
lsls r4, 2
|
||||
adds r0, r4, r5
|
||||
ldr r0, [r0]
|
||||
movs r1, 0xC0
|
||||
lsls r1, 19
|
||||
bl LZ77UnCompVram
|
||||
adds r0, r5, 0x4
|
||||
adds r0, r4, r0
|
||||
ldr r0, [r0]
|
||||
ldr r1, _0815F744 @ =0x0600f800
|
||||
bl LZ77UnCompVram
|
||||
adds r5, 0x8
|
||||
adds r4, r5
|
||||
ldr r0, [r4]
|
||||
movs r1, 0xA0
|
||||
lsls r1, 19
|
||||
movs r4, 0x80
|
||||
lsls r4, 1
|
||||
adds r2, r4, 0
|
||||
bl CpuSet
|
||||
ldr r1, _0815F748 @ =0x04000008
|
||||
movs r2, 0xF8
|
||||
lsls r2, 5
|
||||
adds r0, r2, 0
|
||||
strh r0, [r1]
|
||||
strh r4, [r6]
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0815F73C: .4byte 0x04000010
|
||||
_0815F740: .4byte gUnknown_847A890
|
||||
_0815F744: .4byte 0x0600f800
|
||||
_0815F748: .4byte 0x04000008
|
||||
thumb_func_end sub_815F6E0
|
||||
|
||||
thumb_func_start sub_815F74C
|
||||
sub_815F74C: @ 815F74C
|
||||
push {r4,lr}
|
||||
sub sp, 0x4
|
||||
ldr r0, _0815F7C4 @ =0x0000ffff
|
||||
bl DisableInterrupts
|
||||
movs r0, 0x1
|
||||
bl EnableInterrupts
|
||||
bl m4aSoundVSyncOff
|
||||
movs r0, 0
|
||||
bl SetVBlankCallback
|
||||
movs r4, 0
|
||||
str r4, [sp]
|
||||
ldr r0, _0815F7C8 @ =0x040000d4
|
||||
mov r1, sp
|
||||
str r1, [r0]
|
||||
movs r1, 0xC0
|
||||
lsls r1, 19
|
||||
str r1, [r0, 0x4]
|
||||
ldr r1, _0815F7CC @ =0x85006000
|
||||
str r1, [r0, 0x8]
|
||||
ldr r1, [r0, 0x8]
|
||||
str r4, [sp]
|
||||
mov r1, sp
|
||||
str r1, [r0]
|
||||
movs r1, 0xA0
|
||||
lsls r1, 19
|
||||
str r1, [r0, 0x4]
|
||||
ldr r1, _0815F7D0 @ =0x85000100
|
||||
str r1, [r0, 0x8]
|
||||
ldr r0, [r0, 0x8]
|
||||
bl ResetSpriteData
|
||||
bl ResetTasks
|
||||
bl ScanlineEffect_Stop
|
||||
ldr r0, _0815F7D4 @ =gUnknown_3005ECC
|
||||
strb r4, [r0]
|
||||
ldr r0, _0815F7D8 @ =sub_815F7F0
|
||||
movs r1, 0
|
||||
bl CreateTask
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
ldr r2, _0815F7DC @ =gTasks
|
||||
lsls r1, r0, 2
|
||||
adds r1, r0
|
||||
lsls r1, 3
|
||||
adds r1, r2
|
||||
strh r4, [r1, 0x8]
|
||||
ldr r0, _0815F7E0 @ =sub_815F7E4
|
||||
bl SetMainCallback2
|
||||
add sp, 0x4
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0815F7C4: .4byte 0x0000ffff
|
||||
_0815F7C8: .4byte 0x040000d4
|
||||
_0815F7CC: .4byte 0x85006000
|
||||
_0815F7D0: .4byte 0x85000100
|
||||
_0815F7D4: .4byte gUnknown_3005ECC
|
||||
_0815F7D8: .4byte sub_815F7F0
|
||||
_0815F7DC: .4byte gTasks
|
||||
_0815F7E0: .4byte sub_815F7E4
|
||||
thumb_func_end sub_815F74C
|
||||
|
||||
thumb_func_start sub_815F7E4
|
||||
sub_815F7E4: @ 815F7E4
|
||||
push {lr}
|
||||
bl RunTasks
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_815F7E4
|
||||
|
||||
thumb_func_start sub_815F7F0
|
||||
sub_815F7F0: @ 815F7F0
|
||||
push {r4-r6,lr}
|
||||
sub sp, 0x4
|
||||
lsls r0, 24
|
||||
lsrs r2, r0, 24
|
||||
lsls r0, r2, 2
|
||||
adds r0, r2
|
||||
lsls r0, 3
|
||||
ldr r1, _0815F818 @ =gTasks+0x8
|
||||
adds r5, r0, r1
|
||||
movs r1, 0
|
||||
ldrsh r0, [r5, r1]
|
||||
cmp r0, 0xA
|
||||
bls _0815F80C
|
||||
b _0815F9A6
|
||||
_0815F80C:
|
||||
lsls r0, 2
|
||||
ldr r1, _0815F81C @ =_0815F820
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_0815F818: .4byte gTasks+0x8
|
||||
_0815F81C: .4byte _0815F820
|
||||
.align 2, 0
|
||||
_0815F820:
|
||||
.4byte _0815F84C
|
||||
.4byte _0815F856
|
||||
.4byte _0815F874
|
||||
.4byte _0815F9A6
|
||||
.4byte _0815F890
|
||||
.4byte _0815F8C8
|
||||
.4byte _0815F934
|
||||
.4byte _0815F96A
|
||||
.4byte _0815F96E
|
||||
.4byte _0815F98C
|
||||
.4byte _0815F996
|
||||
_0815F84C:
|
||||
movs r0, 0x5
|
||||
bl sub_815F6E0
|
||||
movs r0, 0x1
|
||||
b _0815F9A4
|
||||
_0815F856:
|
||||
ldr r0, _0815F870 @ =gMain
|
||||
ldrh r1, [r0, 0x2E]
|
||||
movs r0, 0x1
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _0815F864
|
||||
b _0815F9A6
|
||||
_0815F864:
|
||||
movs r0, 0
|
||||
bl sub_815F6E0
|
||||
movs r0, 0x2
|
||||
b _0815F9A4
|
||||
.align 2, 0
|
||||
_0815F870: .4byte gMain
|
||||
_0815F874:
|
||||
ldr r0, _0815F88C @ =gMain
|
||||
ldrh r1, [r0, 0x2E]
|
||||
movs r0, 0x1
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _0815F882
|
||||
b _0815F9A6
|
||||
_0815F882:
|
||||
movs r0, 0x1
|
||||
bl sub_815F6E0
|
||||
movs r0, 0x4
|
||||
b _0815F9A4
|
||||
.align 2, 0
|
||||
_0815F88C: .4byte gMain
|
||||
_0815F890:
|
||||
ldr r0, _0815F8B4 @ =gUnknown_3005EF0
|
||||
ldr r1, _0815F8B8 @ =gMultiBootProgram_BerryGlitchFix_Start
|
||||
str r1, [r0]
|
||||
ldr r2, _0815F8BC @ =gUnknown_3005EF8
|
||||
ldr r0, _0815F8C0 @ =gMultiBootProgram_BerryGlitchFix_End
|
||||
subs r0, r1
|
||||
str r0, [r2]
|
||||
ldr r0, _0815F8C4 @ =gUnknown_3005F00
|
||||
str r1, [r0, 0x28]
|
||||
adds r1, r0, 0
|
||||
adds r1, 0x4B
|
||||
movs r4, 0
|
||||
strb r4, [r1]
|
||||
bl MultiBootInit
|
||||
strh r4, [r5, 0x2]
|
||||
movs r0, 0x5
|
||||
b _0815F9A4
|
||||
.align 2, 0
|
||||
_0815F8B4: .4byte gUnknown_3005EF0
|
||||
_0815F8B8: .4byte gMultiBootProgram_BerryGlitchFix_Start
|
||||
_0815F8BC: .4byte gUnknown_3005EF8
|
||||
_0815F8C0: .4byte gMultiBootProgram_BerryGlitchFix_End
|
||||
_0815F8C4: .4byte gUnknown_3005F00
|
||||
_0815F8C8:
|
||||
ldr r0, _0815F910 @ =gUnknown_3005F00
|
||||
ldrb r6, [r0, 0x18]
|
||||
adds r4, r0, 0
|
||||
cmp r6, 0
|
||||
bne _0815F920
|
||||
ldr r0, [r4, 0x1C]
|
||||
ldr r1, _0815F914 @ =0x00020200
|
||||
ands r0, r1
|
||||
cmp r0, r1
|
||||
bne _0815F920
|
||||
ldrh r0, [r5, 0x2]
|
||||
adds r0, 0x1
|
||||
strh r0, [r5, 0x2]
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
cmp r0, 0xB4
|
||||
ble _0815F924
|
||||
movs r0, 0x2
|
||||
bl sub_815F6E0
|
||||
ldr r0, _0815F918 @ =gUnknown_3005EF0
|
||||
ldr r1, [r0]
|
||||
adds r1, 0xC0
|
||||
ldr r0, _0815F91C @ =gUnknown_3005EF8
|
||||
ldr r2, [r0]
|
||||
subs r2, 0xC0
|
||||
movs r0, 0x1
|
||||
str r0, [sp]
|
||||
adds r0, r4, 0
|
||||
movs r3, 0x4
|
||||
bl MultiBootStartMaster
|
||||
strh r6, [r5, 0x2]
|
||||
movs r0, 0x6
|
||||
b _0815F9A4
|
||||
.align 2, 0
|
||||
_0815F910: .4byte gUnknown_3005F00
|
||||
_0815F914: .4byte 0x00020200
|
||||
_0815F918: .4byte gUnknown_3005EF0
|
||||
_0815F91C: .4byte gUnknown_3005EF8
|
||||
_0815F920:
|
||||
movs r0, 0
|
||||
strh r0, [r5, 0x2]
|
||||
_0815F924:
|
||||
adds r0, r4, 0
|
||||
bl MultiBootMain
|
||||
ldr r1, _0815F930 @ =gUnknown_3005EF4
|
||||
str r0, [r1]
|
||||
b _0815F9A6
|
||||
.align 2, 0
|
||||
_0815F930: .4byte gUnknown_3005EF4
|
||||
_0815F934:
|
||||
ldr r4, _0815F954 @ =gUnknown_3005F00
|
||||
adds r0, r4, 0
|
||||
bl MultiBootMain
|
||||
ldr r1, _0815F958 @ =gUnknown_3005EF4
|
||||
str r0, [r1]
|
||||
adds r0, r4, 0
|
||||
bl MultiBootCheckComplete
|
||||
cmp r0, 0
|
||||
beq _0815F95C
|
||||
movs r0, 0x3
|
||||
bl sub_815F6E0
|
||||
movs r0, 0x7
|
||||
b _0815F9A4
|
||||
.align 2, 0
|
||||
_0815F954: .4byte gUnknown_3005F00
|
||||
_0815F958: .4byte gUnknown_3005EF4
|
||||
_0815F95C:
|
||||
ldrb r1, [r4, 0x1E]
|
||||
movs r0, 0x2
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _0815F9A6
|
||||
movs r0, 0x9
|
||||
b _0815F9A4
|
||||
_0815F96A:
|
||||
movs r0, 0x8
|
||||
b _0815F9A4
|
||||
_0815F96E:
|
||||
ldr r0, _0815F988 @ =gMain
|
||||
ldrh r1, [r0, 0x2E]
|
||||
movs r0, 0x1
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _0815F9A6
|
||||
adds r0, r2, 0
|
||||
bl DestroyTask
|
||||
bl DoSoftReset
|
||||
b _0815F9A6
|
||||
.align 2, 0
|
||||
_0815F988: .4byte gMain
|
||||
_0815F98C:
|
||||
movs r0, 0x4
|
||||
bl sub_815F6E0
|
||||
movs r0, 0xA
|
||||
b _0815F9A4
|
||||
_0815F996:
|
||||
ldr r0, _0815F9B0 @ =gMain
|
||||
ldrh r1, [r0, 0x2E]
|
||||
movs r0, 0x1
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _0815F9A6
|
||||
movs r0, 0
|
||||
_0815F9A4:
|
||||
strh r0, [r5]
|
||||
_0815F9A6:
|
||||
add sp, 0x4
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0815F9B0: .4byte gMain
|
||||
thumb_func_end sub_815F7F0
|
||||
|
||||
.align 2, 0 @ Don't pad with nop.
|
||||
+2
-2
@@ -1688,13 +1688,13 @@ sub_80796E8: @ 80796E8
|
||||
cmp r0, 0
|
||||
bne _080796FE
|
||||
bl m4aMPlayAllStop
|
||||
ldr r0, _08079704 @ =sub_815F74C
|
||||
ldr r0, _08079704 @ =mb_berry_fix_serve
|
||||
bl SetMainCallback2
|
||||
_080796FE:
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08079704: .4byte sub_815F74C
|
||||
_08079704: .4byte mb_berry_fix_serve
|
||||
thumb_func_end sub_80796E8
|
||||
|
||||
thumb_func_start sub_8079708
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
gUnknown_3005EF0
|
||||
gUnknown_3005EF4
|
||||
gUnknown_3005EF8
|
||||
gUnknown_3005F00
|
||||
+4
-1
@@ -2808,7 +2808,10 @@ gUnknown_843F8DB:: @ 843F8DB
|
||||
.incbin "baserom.gba", 0x43F8DB, 0x5
|
||||
|
||||
gUnknown_843F8E0:: @ 843F8E0
|
||||
.incbin "baserom.gba", 0x43F8E0, 0x10
|
||||
.4byte gUnknown_847A8D8
|
||||
.4byte gUnknown_847A8FA
|
||||
.4byte gUnknown_847A913
|
||||
.4byte gUnknown_847A934
|
||||
|
||||
gUnknown_843F8F0:: @ 843F8F0
|
||||
.incbin "baserom.gba", 0x43F8F0, 0x20
|
||||
|
||||
+61
-8
@@ -231,19 +231,72 @@ gUnknown_8479748::
|
||||
|
||||
// berry_fix_program
|
||||
|
||||
gUnknown_847A890:: @ 847A890
|
||||
.4byte gUnknown_8EA467C, gUnknown_8EA52B8, gUnknown_8EA463C
|
||||
.4byte gUnknown_8EA5664, gUnknown_8EA60C8, gUnknown_8EA5604
|
||||
.4byte gUnknown_8EA6408, gUnknown_8EA7028, gUnknown_8EA63C8
|
||||
.4byte gUnknown_8EA7320, gUnknown_8EA8118, gUnknown_8EA72E0
|
||||
.4byte gUnknown_8EA8408, gUnknown_8EA8CC8, gUnknown_8EA83C8
|
||||
.4byte gUnknown_8EA8F40, gUnknown_8EA9588, gUnknown_8EA8F00
|
||||
gUnknown_847A8D8::
|
||||
.string "{CLEAR 11}A{CLEAR 6}B{CLEAR 6}C{CLEAR 26}D{CLEAR 6}E{CLEAR 6}F{CLEAR 26}others$"
|
||||
|
||||
.incbin "baserom.gba", 0x47A8D8, 0x2D4
|
||||
gUnknown_847A8FA::
|
||||
.string "{CLEAR 11}G{CLEAR 6}H{CLEAR 6}I{CLEAR 26}J{CLEAR 6}K{CLEAR 6}L$"
|
||||
|
||||
gUnknown_847A913::
|
||||
.string "{CLEAR 11}M{CLEAR 6}N{CLEAR 6}O{CLEAR 26}P{CLEAR 6}Q{CLEAR 6}R{CLEAR 6}S{CLEAR 26} $"
|
||||
|
||||
gUnknown_847A934::
|
||||
.string "{CLEAR 11}T{CLEAR 6}U{CLEAR 6}V{CLEAR 26}W{CLEAR 6}X{CLEAR 6}Y{CLEAR 6}Z{CLEAR 26} $"
|
||||
.string "{CLEAR 11}a{CLEAR 6}b{CLEAR 6}c{CLEAR 26}d{CLEAR 6}e{CLEAR 6}f{CLEAR 6} {CLEAR 26}.$"
|
||||
.string "{CLEAR 11}g{CLEAR 6}h{CLEAR 7}i{CLEAR 27}j{CLEAR 6}k{CLEAR 6}l{CLEAR 7} {CLEAR 26},$"
|
||||
.string "{CLEAR 11}m{CLEAR 6}n{CLEAR 7}o{CLEAR 26}p{CLEAR 6}q{CLEAR 7}r{CLEAR 6}s{CLEAR 27} $"
|
||||
.string "{CLEAR 12}t{CLEAR 6}u{CLEAR 6}v{CLEAR 26}w{CLEAR 6}x{CLEAR 6}y{CLEAR 6}z{CLEAR 26} $"
|
||||
.string "{CLEAR 11}A{CLEAR 6}B{CLEAR 6}C{CLEAR 26}D{CLEAR 6}E{CLEAR 6}F{CLEAR 6} {CLEAR 26}.$"
|
||||
.string "{CLEAR 11}G{CLEAR 6}H{CLEAR 6}I{CLEAR 26}J{CLEAR 6}K{CLEAR 6}L{CLEAR 6} {CLEAR 26},$"
|
||||
.string "{CLEAR 11}M{CLEAR 6}N{CLEAR 6}O{CLEAR 26}P{CLEAR 6}Q{CLEAR 6}R{CLEAR 6}S{CLEAR 26} $"
|
||||
.string "{CLEAR 11}T{CLEAR 6}U{CLEAR 6}V{CLEAR 26}W{CLEAR 6}X{CLEAR 6}Y{CLEAR 6}Z{CLEAR 26} $"
|
||||
.string "{CLEAR 11}0{CLEAR 16}1{CLEAR 16}2{CLEAR 16}3{CLEAR 16}4{CLEAR 16} $"
|
||||
.string "{CLEAR 11}5{CLEAR 16}6{CLEAR 16}7{CLEAR 16}8{CLEAR 16}9{CLEAR 16} $"
|
||||
.string "{CLEAR 11}!{CLEAR 16}?{CLEAR 16}♂{CLEAR 16}♀{CLEAR 16}/{CLEAR 16}-$"
|
||||
.string "{CLEAR 11}…{CLEAR 16}“{CLEAR 16}”{CLEAR 18}‘{CLEAR 18}'{CLEAR 18} $"
|
||||
.string "ABCDE$"
|
||||
.string "FGHIJ$"
|
||||
.string "KLMNO$"
|
||||
.string "PQRST$"
|
||||
.string "UVWXY$"
|
||||
.string "Z $"
|
||||
.string "01234$"
|
||||
.string "56789$"
|
||||
.string ".,!? $"
|
||||
.string "-/&… $"
|
||||
.string "abcde$"
|
||||
.string "fghij$"
|
||||
.string "klmno$"
|
||||
.string "pqrst$"
|
||||
.string "uvwxy$"
|
||||
.string "z $"
|
||||
.string "01234$"
|
||||
.string "56789$"
|
||||
.string ".,!? $"
|
||||
.string "-/&… $"
|
||||
.string "$"
|
||||
.string "$"
|
||||
.string "$"
|
||||
.string "$"
|
||||
.string "$"
|
||||
.string "$"
|
||||
.string "$"
|
||||
.string "$"
|
||||
.string "{EXTRA 245}{EXTRA 246}{EXTRA 247}{EXTRA 248}{EXTRA 254}$"
|
||||
.string "{EXTRA 249}{EXTRA 250}{EXTRA 252}{EXTRA 251}{EXTRA 253}$"
|
||||
.string "{EXTRA 236}{EXTRA 237}{EXTRA 238}{EXTRA 235}{EXTRA 234}$"
|
||||
.string "♂♀{EXTRA 212}{EXTRA 213}{EXTRA 211}$"
|
||||
.string "{EXTRA 216}{EXTRA 217}{EXTRA 242}{EXTRA 243}{EXTRA 244}$"
|
||||
.string "{EXTRA 218}{EXTRA 241}{EXTRA 224}{EXTRA 226}{EXTRA 227}$"
|
||||
.string "{EXTRA 240}{EXTRA 239}{EXTRA 225}{EXTRA 214}{EXTRA 215}$"
|
||||
.string "{EXTRA 228}{EXTRA 229}{EXTRA 230}{EXTRA 231}{EXTRA 232}$"
|
||||
.string "{EXTRA 233}{EXTRA 220}{EXTRA 221}{EXTRA 222}{EXTRA 209}$"
|
||||
.string "{EXTRA 210}{EXTRA 208}ょ: $"
|
||||
|
||||
// trainer_tower (again?)
|
||||
|
||||
@ 847ABAC
|
||||
.align 2
|
||||
.include "data/trainer_tower/trainers.inc"
|
||||
|
||||
.align 2
|
||||
|
||||
+18
-18
@@ -16234,58 +16234,58 @@ gTilesetPalettes_8EA1B68:: @ 8EA1B68
|
||||
gTilesetTiles_8EA1D68:: @ 8EA1D68
|
||||
.incbin "data/tilesets/primary/82D4A94/tiles.4bpp.lz"
|
||||
|
||||
gUnknown_8EA463C:: @ 8EA463C
|
||||
gBerryFixGameboy_Pal:: @ 8EA463C
|
||||
.incbin "graphics/berry_fix/gba_small.gbapal"
|
||||
|
||||
gUnknown_8EA467C:: @ 8EA467C
|
||||
gBerryFixGameboy_Gfx:: @ 8EA467C
|
||||
.incbin "graphics/berry_fix/gba_small.4bpp.lz"
|
||||
|
||||
gUnknown_8EA52B8:: @ 8EA52B8
|
||||
gBerryFixGameboy_Tilemap:: @ 8EA52B8
|
||||
.incbin "graphics/berry_fix/gba_small.bin.lz"
|
||||
|
||||
gUnknown_8EA5604:: @ 8EA5604
|
||||
gBerryFixGameboyLogo_Pal:: @ 8EA5604
|
||||
.incbin "graphics/berry_fix/logo.gbapal"
|
||||
|
||||
gUnknown_8EA5664:: @ 8EA5664
|
||||
gBerryFixGameboyLogo_Gfx:: @ 8EA5664
|
||||
.incbin "graphics/berry_fix/logo.4bpp.lz"
|
||||
|
||||
gUnknown_8EA60C8:: @ 8EA60C8
|
||||
gBerryFixGameboyLogo_Tilemap:: @ 8EA60C8
|
||||
.incbin "graphics/berry_fix/logo.bin.lz"
|
||||
|
||||
gUnknown_8EA63C8:: @ 8EA63C8
|
||||
gBerryFixGbaTransfer_Pal:: @ 8EA63C8
|
||||
.incbin "graphics/berry_fix/gba_transfer.gbapal"
|
||||
|
||||
gUnknown_8EA6408:: @ 8EA6408
|
||||
gBerryFixGbaTransfer_Gfx:: @ 8EA6408
|
||||
.incbin "graphics/berry_fix/gba_transfer.4bpp.lz"
|
||||
|
||||
gUnknown_8EA7028:: @ 8EA7028
|
||||
gBerryFixGbaTransfer_Tilemap:: @ 8EA7028
|
||||
.incbin "graphics/berry_fix/gba_transfer.bin.lz"
|
||||
|
||||
gUnknown_8EA72E0:: @ 8EA72E0
|
||||
gBerryFixGbaTransferHighlight_Pal:: @ 8EA72E0
|
||||
.incbin "graphics/berry_fix/gba_transfer_highlight.gbapal"
|
||||
|
||||
gUnknown_8EA7320:: @ 8EA7320
|
||||
gBerryFixGbaTransferHighlight_Gfx:: @ 8EA7320
|
||||
.incbin "graphics/berry_fix/gba_transfer_highlight.4bpp.lz"
|
||||
|
||||
gUnknown_8EA8118:: @ 8EA8118
|
||||
gBerryFixGbaTransferHighlight_Tilemap:: @ 8EA8118
|
||||
.incbin "graphics/berry_fix/gba_transfer_highlight.bin.lz"
|
||||
|
||||
gUnknown_8EA83C8:: @ 8EA83C8
|
||||
gBerryFixGbaTransferError_Pal:: @ 8EA83C8
|
||||
.incbin "graphics/berry_fix/gba_transfer_error.gbapal"
|
||||
|
||||
gUnknown_8EA8408:: @ 8EA8408
|
||||
gBerryFixGbaTransferError_Gfx:: @ 8EA8408
|
||||
.incbin "graphics/berry_fix/gba_transfer_error.4bpp.lz"
|
||||
|
||||
gUnknown_8EA8CC8:: @ 8EA8CC8
|
||||
gBerryFixGbaTransferError_Tilemap:: @ 8EA8CC8
|
||||
.incbin "graphics/berry_fix/gba_transfer_error.bin.lz"
|
||||
|
||||
gUnknown_8EA8F00:: @ 8EA8F00
|
||||
gBerryFixWindow_Pal:: @ 8EA8F00
|
||||
.incbin "graphics/berry_fix/window.gbapal"
|
||||
|
||||
gUnknown_8EA8F40:: @ 8EA8F40
|
||||
gBerryFixWindow_Gfx:: @ 8EA8F40
|
||||
.incbin "graphics/berry_fix/window.4bpp.lz"
|
||||
|
||||
gUnknown_8EA9588:: @ 8EA9588
|
||||
gBerryFixWindow_Tilemap:: @ 8EA9588
|
||||
.incbin "graphics/berry_fix/window.bin.lz"
|
||||
|
||||
.align 2
|
||||
|
||||
@@ -175,4 +175,25 @@ extern const u8 gUnknown_8E86BE8[];
|
||||
extern const u8 gUnknown_8E86D6C[];
|
||||
extern const u8 gUnknown_8E86F98[];
|
||||
|
||||
// berry_fix_program
|
||||
|
||||
extern const u8 gBerryFixGameboy_Gfx[];
|
||||
extern const u8 gBerryFixGameboy_Tilemap[];
|
||||
extern const u8 gBerryFixGameboy_Pal[];
|
||||
extern const u8 gBerryFixGameboyLogo_Gfx[];
|
||||
extern const u8 gBerryFixGameboyLogo_Tilemap[];
|
||||
extern const u8 gBerryFixGameboyLogo_Pal[];
|
||||
extern const u8 gBerryFixGbaTransfer_Gfx[];
|
||||
extern const u8 gBerryFixGbaTransfer_Tilemap[];
|
||||
extern const u8 gBerryFixGbaTransfer_Pal[];
|
||||
extern const u8 gBerryFixGbaTransferHighlight_Gfx[];
|
||||
extern const u8 gBerryFixGbaTransferHighlight_Tilemap[];
|
||||
extern const u8 gBerryFixGbaTransferHighlight_Pal[];
|
||||
extern const u8 gBerryFixGbaTransferError_Gfx[];
|
||||
extern const u8 gBerryFixGbaTransferError_Tilemap[];
|
||||
extern const u8 gBerryFixGbaTransferError_Pal[];
|
||||
extern const u8 gBerryFixWindow_Gfx[];
|
||||
extern const u8 gBerryFixWindow_Tilemap[];
|
||||
extern const u8 gBerryFixWindow_Pal[];
|
||||
|
||||
#endif //GUARD_GRAPHICS_H
|
||||
|
||||
+2
-1
@@ -285,7 +285,7 @@ SECTIONS {
|
||||
src/trainer_tower.o(.text);
|
||||
src/unk_815EDDC.o(.text);
|
||||
src/unk_815F138.o(.text);
|
||||
asm/berry_fix_program.o(.text);
|
||||
src/berry_fix_program.o(.text);
|
||||
} =0
|
||||
|
||||
script_data :
|
||||
@@ -458,6 +458,7 @@ SECTIONS {
|
||||
src/cereader_tool.o(.rodata);
|
||||
src/trainer_tower.o(.rodata);
|
||||
src/unk_815F138.o(.rodata);
|
||||
src/berry_fix_program.o(.rodata);
|
||||
data/data_8471F00.o(.rodata.after_trainer_tower);
|
||||
src/mystery_event_msg.o(.rodata);
|
||||
data/mystery_event_msg.o(.rodata);
|
||||
|
||||
@@ -0,0 +1,191 @@
|
||||
#include "global.h"
|
||||
#include "gpu_regs.h"
|
||||
#include "multiboot.h"
|
||||
#include "malloc.h"
|
||||
#include "bg.h"
|
||||
#include "graphics.h"
|
||||
#include "main.h"
|
||||
#include "sprite.h"
|
||||
#include "task.h"
|
||||
#include "scanline_effect.h"
|
||||
#include "window.h"
|
||||
#include "text.h"
|
||||
#include "help_system.h"
|
||||
#include "menu.h"
|
||||
#include "m4a.h"
|
||||
|
||||
// Static type declarations
|
||||
|
||||
typedef struct {
|
||||
u8 state;
|
||||
u8 unk1;
|
||||
u16 unk2;
|
||||
struct MultiBootParam mb;
|
||||
} berryfix_t;
|
||||
|
||||
// Static RAM declarations
|
||||
|
||||
const void * gUnknown_3005EF0;
|
||||
int gUnknown_3005EF4;
|
||||
size_t gUnknown_3005EF8;
|
||||
struct MultiBootParam gUnknown_3005F00;
|
||||
|
||||
// Static ROM declarations
|
||||
|
||||
static void mb_berry_fix_maincb(void);
|
||||
static void mb_berry_fix_task(u8 taskId);
|
||||
|
||||
// .rodata
|
||||
|
||||
static const void *const gUnknown_847A890[][3] = {
|
||||
{
|
||||
gBerryFixGameboy_Gfx,
|
||||
gBerryFixGameboy_Tilemap,
|
||||
gBerryFixGameboy_Pal
|
||||
}, {
|
||||
gBerryFixGameboyLogo_Gfx,
|
||||
gBerryFixGameboyLogo_Tilemap,
|
||||
gBerryFixGameboyLogo_Pal
|
||||
}, {
|
||||
gBerryFixGbaTransfer_Gfx,
|
||||
gBerryFixGbaTransfer_Tilemap,
|
||||
gBerryFixGbaTransfer_Pal
|
||||
}, {
|
||||
gBerryFixGbaTransferHighlight_Gfx,
|
||||
gBerryFixGbaTransferHighlight_Tilemap,
|
||||
gBerryFixGbaTransferHighlight_Pal
|
||||
}, {
|
||||
gBerryFixGbaTransferError_Gfx,
|
||||
gBerryFixGbaTransferError_Tilemap,
|
||||
gBerryFixGbaTransferError_Pal
|
||||
}, {
|
||||
gBerryFixWindow_Gfx,
|
||||
gBerryFixWindow_Tilemap,
|
||||
gBerryFixWindow_Pal
|
||||
},
|
||||
};
|
||||
|
||||
extern const u8 gMultiBootProgram_BerryGlitchFix_Start[0x3BF4];
|
||||
extern const u8 gMultiBootProgram_BerryGlitchFix_End[];
|
||||
|
||||
// .text
|
||||
|
||||
static void mb_berry_fix_print(int scene)
|
||||
{
|
||||
REG_DISPCNT = 0;
|
||||
REG_BG0HOFS = 0;
|
||||
REG_BG0VOFS = 0;
|
||||
REG_BLDCNT = 0;
|
||||
LZ77UnCompVram(gUnknown_847A890[scene][0], (void *)BG_CHAR_ADDR(0));
|
||||
LZ77UnCompVram(gUnknown_847A890[scene][1], (void *)BG_SCREEN_ADDR(31));
|
||||
CpuCopy16(gUnknown_847A890[scene][2], (void *)BG_PLTT, 0x200);
|
||||
REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(31) | BGCNT_TXT256x256;
|
||||
REG_DISPCNT = DISPCNT_BG0_ON;
|
||||
}
|
||||
|
||||
void mb_berry_fix_serve(void) // noreturn
|
||||
{
|
||||
u8 taskId;
|
||||
DisableInterrupts(0xFFFF);
|
||||
EnableInterrupts(INTR_FLAG_VBLANK);
|
||||
m4aSoundVSyncOff();
|
||||
SetVBlankCallback(NULL);
|
||||
DmaFill32(3, 0, (void *)VRAM, VRAM_SIZE);
|
||||
DmaFill32(3, 0, (void *)PLTT, PLTT_SIZE);
|
||||
ResetSpriteData();
|
||||
ResetTasks();
|
||||
ScanlineEffect_Stop();
|
||||
gUnknown_3005ECC = 0;
|
||||
taskId = CreateTask(mb_berry_fix_task, 0);
|
||||
gTasks[taskId].data[0] = 0;
|
||||
SetMainCallback2(mb_berry_fix_maincb);
|
||||
}
|
||||
|
||||
static void mb_berry_fix_maincb(void)
|
||||
{
|
||||
RunTasks();
|
||||
}
|
||||
|
||||
static void mb_berry_fix_task(u8 taskId)
|
||||
{
|
||||
s16 * data = gTasks[taskId].data;
|
||||
|
||||
switch (data[0])
|
||||
{
|
||||
case 0:
|
||||
mb_berry_fix_print(5);
|
||||
data[0] = 1;
|
||||
break;
|
||||
case 1:
|
||||
if (JOY_NEW(A_BUTTON))
|
||||
{
|
||||
mb_berry_fix_print(0);
|
||||
data[0] = 2;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (JOY_NEW(A_BUTTON))
|
||||
{
|
||||
mb_berry_fix_print(1);
|
||||
data[0] = 4;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
gUnknown_3005EF0 = gMultiBootProgram_BerryGlitchFix_Start;
|
||||
gUnknown_3005EF8 = gMultiBootProgram_BerryGlitchFix_End - gMultiBootProgram_BerryGlitchFix_Start;
|
||||
gUnknown_3005F00.masterp = (void *)gMultiBootProgram_BerryGlitchFix_Start;
|
||||
gUnknown_3005F00.server_type = MULTIBOOT_SERVER_TYPE_NORMAL;
|
||||
MultiBootInit(&gUnknown_3005F00);
|
||||
data[1] = 0;
|
||||
data[0] = 5;
|
||||
break;
|
||||
case 5:
|
||||
if (gUnknown_3005F00.probe_count == 0 && gUnknown_3005F00.response_bit & 0x2 && gUnknown_3005F00.client_bit & 0x2)
|
||||
{
|
||||
data[1]++;
|
||||
if (data[1] > 180)
|
||||
{
|
||||
mb_berry_fix_print(2);
|
||||
MultiBootStartMaster(&gUnknown_3005F00, gUnknown_3005EF0 + MULTIBOOT_HEADER_SIZE, gUnknown_3005EF8 - MULTIBOOT_HEADER_SIZE, 4, 1);
|
||||
data[1] = 0;
|
||||
data[0] = 6;
|
||||
}
|
||||
else
|
||||
gUnknown_3005EF4 = MultiBootMain(&gUnknown_3005F00);
|
||||
}
|
||||
else
|
||||
{
|
||||
data[1] = 0;
|
||||
gUnknown_3005EF4 = MultiBootMain(&gUnknown_3005F00);
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
gUnknown_3005EF4 = MultiBootMain(&gUnknown_3005F00);
|
||||
if (MultiBootCheckComplete(&gUnknown_3005F00))
|
||||
{
|
||||
mb_berry_fix_print(3);
|
||||
data[0] = 7;
|
||||
}
|
||||
else if (!(gUnknown_3005F00.client_bit & 2))
|
||||
data[0] = 9;
|
||||
break;
|
||||
case 7:
|
||||
data[0] = 8;
|
||||
break;
|
||||
case 8:
|
||||
if (JOY_NEW(A_BUTTON))
|
||||
{
|
||||
DestroyTask(taskId);
|
||||
DoSoftReset();
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
mb_berry_fix_print(4);
|
||||
data[0] = 10;
|
||||
break;
|
||||
case 10:
|
||||
if (JOY_NEW(A_BUTTON))
|
||||
data[0] = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
+3
-12
@@ -329,20 +329,11 @@ gUnknown_3005ECC: @ 3005ECC
|
||||
|
||||
.align 4
|
||||
gUnknown_3005EE0: @ 3005EE0
|
||||
@ const u8 *gUnknown_3005EE0[4]
|
||||
.space 0x10
|
||||
|
||||
gUnknown_3005EF0: @ 3005EF0
|
||||
.space 0x4
|
||||
|
||||
gUnknown_3005EF4: @ 3005EF4
|
||||
.space 0x4
|
||||
|
||||
gUnknown_3005EF8: @ 3005EF8
|
||||
.space 0x8
|
||||
|
||||
gUnknown_3005F00: @ 3005F00
|
||||
.space 0x50
|
||||
|
||||
.align 4
|
||||
.include "berry_fix_program.o"
|
||||
.include "m4a.o"
|
||||
.include "agb_flash.o"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user