mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-12-26 03:34:15 +01:00
start pokeblock feed
This commit is contained in:
parent
ad07843f2d
commit
6561b62986
@ -1433,13 +1433,13 @@ DrawMainBattleBackground: @ 8035770
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _080357B0
|
||||
ldr r0, =gUnknown_08D7C440
|
||||
ldr r0, =gBattleTerrainTiles_Building
|
||||
ldr r1, =0x06008000
|
||||
bl LZDecompressVram
|
||||
ldr r0, =gUnknown_08D7CA28
|
||||
ldr r1, =0x0600d000
|
||||
bl LZDecompressVram
|
||||
ldr r0, =gUnknown_08D7C9EC
|
||||
ldr r0, =gBattleTerrainPalette_Frontier
|
||||
b _08035A52
|
||||
.pool
|
||||
_080357B0:
|
||||
@ -1502,7 +1502,7 @@ _0803584C:
|
||||
ldrb r0, [r0, 0x1]
|
||||
cmp r0, 0x20
|
||||
bne _08035898
|
||||
ldr r0, =gUnknown_08D7C440
|
||||
ldr r0, =gBattleTerrainTiles_Building
|
||||
ldr r1, =0x06008000
|
||||
bl LZDecompressVram
|
||||
ldr r0, =gUnknown_08D7CA28
|
||||
@ -1576,7 +1576,7 @@ _08035904:
|
||||
b _08035A52
|
||||
.pool
|
||||
_08035950:
|
||||
ldr r0, =gUnknown_08D7C440
|
||||
ldr r0, =gBattleTerrainTiles_Building
|
||||
ldr r1, =0x06008000
|
||||
bl LZDecompressVram
|
||||
ldr r0, =gUnknown_08D7CA28
|
||||
@ -1650,13 +1650,13 @@ _08035A52:
|
||||
b _08035A8A
|
||||
.pool
|
||||
_08035A70:
|
||||
ldr r0, =gUnknown_08D7C440
|
||||
ldr r0, =gBattleTerrainTiles_Building
|
||||
ldr r1, =0x06008000
|
||||
bl LZDecompressVram
|
||||
ldr r0, =gUnknown_08D7CA28
|
||||
ldr r1, =0x0600d000
|
||||
bl LZDecompressVram
|
||||
ldr r0, =gUnknown_08D7C9EC
|
||||
ldr r0, =gBattleTerrainPalette_Frontier
|
||||
movs r1, 0x20
|
||||
movs r2, 0x60
|
||||
bl LoadCompressedPalette
|
||||
@ -2813,7 +2813,7 @@ _08036510:
|
||||
b _0803651A
|
||||
.pool
|
||||
_08036518:
|
||||
ldr r0, =gUnknown_08D7C440
|
||||
ldr r0, =gBattleTerrainTiles_Building
|
||||
_0803651A:
|
||||
ldr r1, =0x06008000
|
||||
bl LZDecompressVram
|
||||
@ -3043,7 +3043,7 @@ _08036738:
|
||||
b _08036742
|
||||
.pool
|
||||
_08036740:
|
||||
ldr r0, =gUnknown_08D7C9EC
|
||||
ldr r0, =gBattleTerrainPalette_Frontier
|
||||
_08036742:
|
||||
movs r1, 0x20
|
||||
movs r2, 0x60
|
||||
|
@ -115,7 +115,7 @@ _08177CD8:
|
||||
.4byte _08177DC2
|
||||
_08177D18:
|
||||
bl SetVBlankHBlankCallbacksToNull
|
||||
bl sub_8121DA0
|
||||
bl ResetVramOamAndBgCntRegs
|
||||
bl clear_scheduled_bg_copies_to_vram
|
||||
b _08177DDC
|
||||
_08177D26:
|
||||
@ -246,7 +246,7 @@ sub_8177E14: @ 8177E14
|
||||
adds r1, r0
|
||||
movs r0, 0x3
|
||||
bl SetBgTilemapBuffer
|
||||
bl sub_8121E10
|
||||
bl ResetAllBgsCoordinates
|
||||
movs r0, 0x2
|
||||
bl schedule_bg_copy_tilemap_to_vram
|
||||
movs r0, 0x3
|
||||
|
@ -568,7 +568,7 @@ _081AB046:
|
||||
thumb_func_start bag_menu_init_bgs
|
||||
bag_menu_init_bgs: @ 81AB050
|
||||
push {r4,lr}
|
||||
bl sub_8121DA0
|
||||
bl ResetVramOamAndBgCntRegs
|
||||
ldr r4, =gUnknown_0203CE54
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x4
|
||||
@ -586,7 +586,7 @@ bag_menu_init_bgs: @ 81AB050
|
||||
adds r1, 0x4
|
||||
movs r0, 0x2
|
||||
bl SetBgTilemapBuffer
|
||||
bl sub_8121E10
|
||||
bl ResetAllBgsCoordinates
|
||||
movs r0, 0x2
|
||||
bl schedule_bg_copy_tilemap_to_vram
|
||||
movs r1, 0x82
|
||||
|
@ -175,14 +175,14 @@ sub_8160740: @ 8160740
|
||||
thumb_func_start sub_81607EC
|
||||
sub_81607EC: @ 81607EC
|
||||
push {lr}
|
||||
bl sub_8121DA0
|
||||
bl ResetVramOamAndBgCntRegs
|
||||
movs r0, 0
|
||||
bl ResetBgsAndClearDma3BusyFlags
|
||||
ldr r1, =gUnknown_085CEC28
|
||||
movs r0, 0
|
||||
movs r2, 0x2
|
||||
bl InitBgsFromTemplates
|
||||
bl sub_8121E10
|
||||
bl ResetAllBgsCoordinates
|
||||
movs r1, 0x82
|
||||
lsls r1, 5
|
||||
movs r0, 0
|
||||
|
@ -5,8 +5,8 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_8121DA0
|
||||
sub_8121DA0: @ 8121DA0
|
||||
thumb_func_start ResetVramOamAndBgCntRegs
|
||||
ResetVramOamAndBgCntRegs: @ 8121DA0
|
||||
push {r4,lr}
|
||||
sub sp, 0xC
|
||||
movs r0, 0
|
||||
@ -50,10 +50,10 @@ sub_8121DA0: @ 8121DA0
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_8121DA0
|
||||
thumb_func_end ResetVramOamAndBgCntRegs
|
||||
|
||||
thumb_func_start sub_8121E10
|
||||
sub_8121E10: @ 8121E10
|
||||
thumb_func_start ResetAllBgsCoordinates
|
||||
ResetAllBgsCoordinates: @ 8121E10
|
||||
push {lr}
|
||||
movs r0, 0
|
||||
movs r1, 0
|
||||
@ -89,7 +89,7 @@ sub_8121E10: @ 8121E10
|
||||
bl ChangeBgY
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8121E10
|
||||
thumb_func_end ResetAllBgsCoordinates
|
||||
|
||||
thumb_func_start SetVBlankHBlankCallbacksToNull
|
||||
@ void SetVBlankHBlankCallbacksToNull()
|
||||
@ -177,8 +177,8 @@ _08121EC0:
|
||||
.pool
|
||||
thumb_func_end DisplayMessageAndContinueTask
|
||||
|
||||
thumb_func_start sub_8121F20
|
||||
sub_8121F20: @ 8121F20
|
||||
thumb_func_start RunTextPrintersRetIsActive
|
||||
RunTextPrintersRetIsActive: @ 8121F20
|
||||
push {r4,lr}
|
||||
adds r4, r0, 0
|
||||
lsls r4, 24
|
||||
@ -191,7 +191,7 @@ sub_8121F20: @ 8121F20
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8121F20
|
||||
thumb_func_end RunTextPrintersRetIsActive
|
||||
|
||||
thumb_func_start Task_ContinueTaskAfterMessagePrints
|
||||
@ void Task_ContinueTaskAfterMessagePrints(u8 taskId)
|
||||
@ -201,7 +201,7 @@ Task_ContinueTaskAfterMessagePrints: @ 8121F3C
|
||||
lsrs r4, r0, 24
|
||||
ldr r0, =gUnknown_0203A140
|
||||
ldrb r0, [r0]
|
||||
bl sub_8121F20
|
||||
bl RunTextPrintersRetIsActive
|
||||
lsls r0, 16
|
||||
cmp r0, 0
|
||||
bne _08121F5A
|
||||
|
@ -98,7 +98,7 @@ _081B0234:
|
||||
.4byte _081B0474
|
||||
_081B0290:
|
||||
bl SetVBlankHBlankCallbacksToNull
|
||||
bl sub_8121DA0
|
||||
bl ResetVramOamAndBgCntRegs
|
||||
bl clear_scheduled_bg_copies_to_vram
|
||||
ldr r1, =gMain
|
||||
movs r0, 0x87
|
||||
@ -429,7 +429,7 @@ sub_81B0550: @ 81B0550
|
||||
ldr r1, [r5]
|
||||
movs r0, 0x1
|
||||
bl SetBgTilemapBuffer
|
||||
bl sub_8121E10
|
||||
bl ResetAllBgsCoordinates
|
||||
movs r0, 0x1
|
||||
bl schedule_bg_copy_tilemap_to_vram
|
||||
movs r1, 0x82
|
||||
@ -3161,7 +3161,7 @@ sub_81B1B8C: @ 81B1B8C
|
||||
lsrs r4, r0, 24
|
||||
adds r5, r4, 0
|
||||
movs r0, 0x6
|
||||
bl sub_8121F20
|
||||
bl RunTextPrintersRetIsActive
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
cmp r0, 0x1
|
||||
|
1133
asm/pokeblock_feed.s
1133
asm/pokeblock_feed.s
File diff suppressed because it is too large
Load Diff
@ -2351,7 +2351,7 @@ _081C51D6:
|
||||
thumb_func_start sub_81C51DC
|
||||
sub_81C51DC: @ 81C51DC
|
||||
push {lr}
|
||||
bl sub_8121DA0
|
||||
bl ResetVramOamAndBgCntRegs
|
||||
movs r0, 0
|
||||
bl ResetBgsAndClearDma3BusyFlags
|
||||
ldr r1, =gUnknown_0861F2B4
|
||||
@ -2363,7 +2363,7 @@ sub_81C51DC: @ 81C51DC
|
||||
adds r1, 0x4
|
||||
movs r0, 0x2
|
||||
bl SetBgTilemapBuffer
|
||||
bl sub_8121E10
|
||||
bl ResetAllBgsCoordinates
|
||||
movs r0, 0x2
|
||||
bl schedule_bg_copy_tilemap_to_vram
|
||||
movs r1, 0x82
|
||||
|
@ -1066,7 +1066,7 @@ sub_81D6FD0: @ 81D6FD0
|
||||
thumb_func_start sub_81D6FE0
|
||||
sub_81D6FE0: @ 81D6FE0
|
||||
push {r4,lr}
|
||||
bl sub_8121DA0
|
||||
bl ResetVramOamAndBgCntRegs
|
||||
movs r0, 0
|
||||
bl ResetBgsAndClearDma3BusyFlags
|
||||
ldr r1, =gUnknown_0862A888
|
||||
@ -1088,7 +1088,7 @@ sub_81D6FE0: @ 81D6FE0
|
||||
adds r1, r0
|
||||
movs r0, 0x2
|
||||
bl SetBgTilemapBuffer
|
||||
bl sub_8121E10
|
||||
bl ResetAllBgsCoordinates
|
||||
movs r0, 0
|
||||
bl schedule_bg_copy_tilemap_to_vram
|
||||
movs r0, 0x1
|
||||
@ -2758,7 +2758,7 @@ _081D7E08:
|
||||
thumb_func_start sub_81D7E10
|
||||
sub_81D7E10: @ 81D7E10
|
||||
push {r4,lr}
|
||||
bl sub_8121DA0
|
||||
bl ResetVramOamAndBgCntRegs
|
||||
movs r0, 0
|
||||
bl ResetBgsAndClearDma3BusyFlags
|
||||
ldr r1, =gUnknown_0862AA54
|
||||
@ -2780,7 +2780,7 @@ sub_81D7E10: @ 81D7E10
|
||||
adds r1, r0
|
||||
movs r0, 0x2
|
||||
bl SetBgTilemapBuffer
|
||||
bl sub_8121E10
|
||||
bl ResetAllBgsCoordinates
|
||||
movs r0, 0
|
||||
bl schedule_bg_copy_tilemap_to_vram
|
||||
movs r0, 0x1
|
||||
@ -3292,7 +3292,7 @@ _081D829A:
|
||||
thumb_func_start sub_81D82B0
|
||||
sub_81D82B0: @ 81D82B0
|
||||
push {r4,lr}
|
||||
bl sub_8121DA0
|
||||
bl ResetVramOamAndBgCntRegs
|
||||
movs r0, 0
|
||||
bl ResetBgsAndClearDma3BusyFlags
|
||||
ldr r1, =gUnknown_0862AACC
|
||||
@ -3319,7 +3319,7 @@ sub_81D82B0: @ 81D82B0
|
||||
adds r1, r0
|
||||
movs r0, 0x3
|
||||
bl SetBgTilemapBuffer
|
||||
bl sub_8121E10
|
||||
bl ResetAllBgsCoordinates
|
||||
movs r0, 0
|
||||
bl schedule_bg_copy_tilemap_to_vram
|
||||
movs r0, 0x1
|
||||
@ -3899,7 +3899,7 @@ _081D8818:
|
||||
thumb_func_start sub_81D8828
|
||||
sub_81D8828: @ 81D8828
|
||||
push {r4,lr}
|
||||
bl sub_8121DA0
|
||||
bl ResetVramOamAndBgCntRegs
|
||||
movs r0, 0
|
||||
bl ResetBgsAndClearDma3BusyFlags
|
||||
ldr r1, =gUnknown_0862AB44
|
||||
@ -3926,7 +3926,7 @@ sub_81D8828: @ 81D8828
|
||||
adds r1, r0
|
||||
movs r0, 0x3
|
||||
bl SetBgTilemapBuffer
|
||||
bl sub_8121E10
|
||||
bl ResetAllBgsCoordinates
|
||||
movs r0, 0
|
||||
bl schedule_bg_copy_tilemap_to_vram
|
||||
movs r0, 0x1
|
||||
@ -4354,7 +4354,7 @@ _081D8C26:
|
||||
thumb_func_start sub_81D8C38
|
||||
sub_81D8C38: @ 81D8C38
|
||||
push {r4,lr}
|
||||
bl sub_8121DA0
|
||||
bl ResetVramOamAndBgCntRegs
|
||||
movs r0, 0
|
||||
bl ResetBgsAndClearDma3BusyFlags
|
||||
ldr r1, =gUnknown_0862AD08
|
||||
@ -4376,7 +4376,7 @@ sub_81D8C38: @ 81D8C38
|
||||
adds r1, r0
|
||||
movs r0, 0x2
|
||||
bl SetBgTilemapBuffer
|
||||
bl sub_8121E10
|
||||
bl ResetAllBgsCoordinates
|
||||
movs r0, 0
|
||||
bl schedule_bg_copy_tilemap_to_vram
|
||||
movs r0, 0x1
|
||||
|
46
asm/rom6.s
46
asm/rom6.s
@ -728,7 +728,7 @@ _08135A9A:
|
||||
movs r0, 0x38
|
||||
movs r1, 0x40
|
||||
movs r2, 0
|
||||
bl sub_8136444
|
||||
bl CreatePokeblockCaseSprite
|
||||
ldr r1, =gUnknown_0203AB50
|
||||
ldr r1, [r1]
|
||||
ldr r2, =0x00000e74
|
||||
@ -859,7 +859,7 @@ _08135BD2:
|
||||
thumb_func_start sub_8135BDC
|
||||
sub_8135BDC: @ 8135BDC
|
||||
push {lr}
|
||||
bl sub_8121DA0
|
||||
bl ResetVramOamAndBgCntRegs
|
||||
movs r0, 0
|
||||
bl ResetBgsAndClearDma3BusyFlags
|
||||
ldr r1, =gUnknown_085B2620
|
||||
@ -870,7 +870,7 @@ sub_8135BDC: @ 8135BDC
|
||||
ldr r1, [r0]
|
||||
movs r0, 0x2
|
||||
bl SetBgTilemapBuffer
|
||||
bl sub_8121E10
|
||||
bl ResetAllBgsCoordinates
|
||||
movs r0, 0x2
|
||||
bl schedule_bg_copy_tilemap_to_vram
|
||||
movs r1, 0x82
|
||||
@ -949,12 +949,12 @@ _08135CBC:
|
||||
b _08135CDE
|
||||
.pool
|
||||
_08135CCC:
|
||||
ldr r0, =gUnknown_085B26F4
|
||||
ldr r0, =gPokeblockCase_SpriteSheet
|
||||
bl LoadCompressedObjectPic
|
||||
b _08135CDE
|
||||
.pool
|
||||
_08135CD8:
|
||||
ldr r0, =gUnknown_085B26FC
|
||||
ldr r0, =gPokeblockCase_SpritePal
|
||||
bl LoadCompressedObjectPalette
|
||||
_08135CDE:
|
||||
ldr r0, =gUnknown_0203AB50
|
||||
@ -1313,7 +1313,7 @@ _08136002:
|
||||
lsls r1, r4, 24
|
||||
lsrs r1, 24
|
||||
mov r0, r8
|
||||
bl sub_8136F9C
|
||||
bl GetPokeblockData
|
||||
lsls r0, 16
|
||||
adds r7, r4, 0
|
||||
cmp r0, 0
|
||||
@ -1842,8 +1842,8 @@ _08136436:
|
||||
.pool
|
||||
thumb_func_end sub_8136418
|
||||
|
||||
thumb_func_start sub_8136444
|
||||
sub_8136444: @ 8136444
|
||||
thumb_func_start CreatePokeblockCaseSprite
|
||||
CreatePokeblockCaseSprite: @ 8136444
|
||||
push {r4,r5,lr}
|
||||
adds r4, r0, 0
|
||||
adds r5, r1, 0
|
||||
@ -1864,7 +1864,7 @@ sub_8136444: @ 8136444
|
||||
pop {r1}
|
||||
bx r1
|
||||
.pool
|
||||
thumb_func_end sub_8136444
|
||||
thumb_func_end CreatePokeblockCaseSprite
|
||||
|
||||
thumb_func_start sub_8136470
|
||||
sub_8136470: @ 8136470
|
||||
@ -2549,7 +2549,7 @@ sub_8136A74: @ 8136A74
|
||||
ldr r0, [r2]
|
||||
adds r0, r1
|
||||
ldr r1, =sub_8136AA0
|
||||
bl sub_8166204
|
||||
bl ChooseMonToGivePokeblock
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
@ -3000,7 +3000,7 @@ GetHighestPokeblocksFlavorLevel: @ 8136EA4
|
||||
push {r4-r6,lr}
|
||||
adds r6, r0, 0
|
||||
movs r1, 0x1
|
||||
bl sub_8136F9C
|
||||
bl GetPokeblockData
|
||||
lsls r0, 24
|
||||
lsrs r5, r0, 24
|
||||
movs r1, 0x1
|
||||
@ -3010,7 +3010,7 @@ _08136EB4:
|
||||
lsrs r4, r0, 24
|
||||
adds r0, r6, 0
|
||||
adds r1, r4, 0
|
||||
bl sub_8136F9C
|
||||
bl GetPokeblockData
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r5, r0
|
||||
@ -3030,7 +3030,7 @@ _08136ECC:
|
||||
GetPokeblocksFeel: @ 8136EDC
|
||||
push {lr}
|
||||
movs r1, 0x6
|
||||
bl sub_8136F9C
|
||||
bl GetPokeblockData
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x63
|
||||
@ -3130,8 +3130,8 @@ _08136F96:
|
||||
bx r1
|
||||
thumb_func_end sub_8136F68
|
||||
|
||||
thumb_func_start sub_8136F9C
|
||||
sub_8136F9C: @ 8136F9C
|
||||
thumb_func_start GetPokeblockData
|
||||
GetPokeblockData: @ 8136F9C
|
||||
push {lr}
|
||||
lsls r1, 24
|
||||
lsrs r1, 24
|
||||
@ -3175,7 +3175,7 @@ _08136FDC:
|
||||
_08136FDE:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8136F9C
|
||||
thumb_func_end GetPokeblockData
|
||||
|
||||
thumb_func_start PokeblockGetGain
|
||||
PokeblockGetGain: @ 8136FE4
|
||||
@ -3198,7 +3198,7 @@ _08136FFE:
|
||||
lsrs r5, r0, 24
|
||||
mov r0, r8
|
||||
adds r1, r5, 0
|
||||
bl sub_8136F9C
|
||||
bl GetPokeblockData
|
||||
lsls r0, 16
|
||||
asrs r1, r0, 16
|
||||
cmp r1, 0
|
||||
@ -3229,12 +3229,12 @@ _0813702A:
|
||||
.pool
|
||||
thumb_func_end PokeblockGetGain
|
||||
|
||||
thumb_func_start sub_8137044
|
||||
sub_8137044: @ 8137044
|
||||
thumb_func_start PokeblockCopyName
|
||||
PokeblockCopyName: @ 8137044
|
||||
push {r4,lr}
|
||||
adds r4, r1, 0
|
||||
movs r1, 0
|
||||
bl sub_8136F9C
|
||||
bl GetPokeblockData
|
||||
lsls r0, 24
|
||||
ldr r1, =gPokeblockNames
|
||||
lsrs r0, 22
|
||||
@ -3246,7 +3246,7 @@ sub_8137044: @ 8137044
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_8137044
|
||||
thumb_func_end PokeblockCopyName
|
||||
|
||||
thumb_func_start sub_8137068
|
||||
sub_8137068: @ 8137068
|
||||
@ -3298,13 +3298,13 @@ _081370BC:
|
||||
lsls r1, 24
|
||||
lsrs r1, 24
|
||||
adds r0, r5, 0
|
||||
bl sub_8136F9C
|
||||
bl GetPokeblockData
|
||||
adds r4, r0, 0
|
||||
adds r1, r6, 0x1
|
||||
lsls r1, 24
|
||||
lsrs r1, 24
|
||||
adds r0, r5, 0
|
||||
bl sub_8136F9C
|
||||
bl GetPokeblockData
|
||||
lsls r4, 16
|
||||
lsls r0, 16
|
||||
lsls r1, r6, 16
|
||||
|
@ -425,8 +425,8 @@ _08140618:
|
||||
bl SetVBlankCallback
|
||||
bl remove_some_task
|
||||
bl SetVBlankHBlankCallbacksToNull
|
||||
bl sub_8121DA0
|
||||
bl sub_8121E10
|
||||
bl ResetVramOamAndBgCntRegs
|
||||
bl ResetAllBgsCoordinates
|
||||
b _081407F8
|
||||
_08140630:
|
||||
bl sub_8140388
|
||||
@ -3258,8 +3258,8 @@ sub_8141E7C: @ 8141E7C
|
||||
ldr r0, =gSpriteCoordOffsetY
|
||||
strh r4, [r0]
|
||||
strh r4, [r1]
|
||||
bl sub_8121DA0
|
||||
bl sub_8121E10
|
||||
bl ResetVramOamAndBgCntRegs
|
||||
bl ResetAllBgsCoordinates
|
||||
movs r0, 0x50
|
||||
movs r1, 0
|
||||
bl SetGpuReg
|
||||
|
@ -6,325 +6,9 @@
|
||||
.text
|
||||
|
||||
|
||||
thumb_func_start sub_816624C
|
||||
sub_816624C: @ 816624C
|
||||
push {r4,r5,lr}
|
||||
ldr r4, =gUnknown_0203BCAC
|
||||
ldr r0, =0x0000806c
|
||||
bl AllocZeroed
|
||||
str r0, [r4]
|
||||
ldr r5, =gUnknown_0203BC90
|
||||
ldr r1, =0x00007fd0
|
||||
adds r0, r1
|
||||
str r0, [r5]
|
||||
ldr r1, =gUnknown_0203BC98
|
||||
ldr r1, [r1]
|
||||
str r1, [r0, 0x8]
|
||||
ldr r1, =gUnknown_0203BC94
|
||||
ldr r1, [r1]
|
||||
str r1, [r0, 0x4]
|
||||
ldr r4, =gUnknown_0203BC9C
|
||||
ldrb r0, [r4]
|
||||
bl sub_81672E4
|
||||
strb r0, [r4]
|
||||
ldr r5, [r5]
|
||||
movs r1, 0
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x3
|
||||
bls _08166284
|
||||
movs r1, 0x1
|
||||
_08166284:
|
||||
adds r0, r5, 0
|
||||
adds r0, 0x56
|
||||
strb r1, [r0]
|
||||
ldr r0, =sub_8166380
|
||||
bl sub_816636C
|
||||
ldr r0, =sub_81662C0
|
||||
bl SetMainCallback2
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_816624C
|
||||
|
||||
thumb_func_start sub_81662C0
|
||||
sub_81662C0: @ 81662C0
|
||||
push {r4,lr}
|
||||
ldr r4, =gUnknown_0203BC90
|
||||
ldr r0, [r4]
|
||||
ldr r0, [r0]
|
||||
bl _call_via_r0
|
||||
bl AnimateSprites
|
||||
bl BuildOamBuffer
|
||||
bl UpdatePaletteFade
|
||||
ldr r4, [r4]
|
||||
ldr r1, [r4]
|
||||
ldr r0, =map_warp_consider_1_to_outside_or_stair_or_dive
|
||||
cmp r1, r0
|
||||
bne _081662F0
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x50
|
||||
movs r1, 0
|
||||
strb r1, [r0]
|
||||
ldr r0, =sub_8166304
|
||||
bl SetMainCallback2
|
||||
_081662F0:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_81662C0
|
||||
|
||||
thumb_func_start sub_8166304
|
||||
sub_8166304: @ 8166304
|
||||
push {lr}
|
||||
bl sub_81668F8
|
||||
bl AnimateSprites
|
||||
bl BuildOamBuffer
|
||||
bl UpdatePaletteFade
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8166304
|
||||
|
||||
thumb_func_start sub_816631C
|
||||
sub_816631C: @ 816631C
|
||||
push {lr}
|
||||
ldr r0, =gUnknown_0203BC90
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0]
|
||||
bl _call_via_r0
|
||||
bl AnimateSprites
|
||||
bl BuildOamBuffer
|
||||
bl RunTextPrinters
|
||||
bl UpdatePaletteFade
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_816631C
|
||||
|
||||
thumb_func_start sub_8166340
|
||||
sub_8166340: @ 8166340
|
||||
push {lr}
|
||||
bl LoadOam
|
||||
bl ProcessSpriteCopyRequests
|
||||
bl TransferPlttBuffer
|
||||
ldr r0, =gUnknown_0203BCAC
|
||||
ldr r0, [r0]
|
||||
ldr r1, =0x00007c58
|
||||
adds r0, r1
|
||||
bl sub_81D2108
|
||||
bl sub_80BA0A8
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_8166340
|
||||
|
||||
thumb_func_start sub_816636C
|
||||
sub_816636C: @ 816636C
|
||||
ldr r1, =gUnknown_0203BC90
|
||||
ldr r1, [r1]
|
||||
str r0, [r1]
|
||||
adds r1, 0x50
|
||||
movs r0, 0
|
||||
strb r0, [r1]
|
||||
bx lr
|
||||
.pool
|
||||
thumb_func_end sub_816636C
|
||||
|
||||
thumb_func_start sub_8166380
|
||||
sub_8166380: @ 8166380
|
||||
push {r4,r5,lr}
|
||||
sub sp, 0x4
|
||||
ldr r1, =gUnknown_0203BC90
|
||||
ldr r0, [r1]
|
||||
adds r0, 0x50
|
||||
ldrb r0, [r0]
|
||||
adds r2, r1, 0
|
||||
cmp r0, 0xF
|
||||
bls _08166394
|
||||
b _08166556
|
||||
_08166394:
|
||||
lsls r0, 2
|
||||
ldr r1, =_081663A8
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.pool
|
||||
.align 2, 0
|
||||
_081663A8:
|
||||
.4byte _081663E8
|
||||
.4byte _0816640C
|
||||
.4byte _08166416
|
||||
.4byte _08166434
|
||||
.4byte _08166464
|
||||
.4byte _08166468
|
||||
.4byte _08166474
|
||||
.4byte _08166484
|
||||
.4byte _08166490
|
||||
.4byte _0816649C
|
||||
.4byte _081664B8
|
||||
.4byte _081664BC
|
||||
.4byte _081664E4
|
||||
.4byte _08166510
|
||||
.4byte _08166528
|
||||
.4byte _08166550
|
||||
_081663E8:
|
||||
ldr r2, =gUnknown_0203BCAC
|
||||
ldr r0, [r2]
|
||||
ldr r1, =0x00007b10
|
||||
adds r0, r1
|
||||
movs r1, 0xFF
|
||||
strb r1, [r0]
|
||||
ldr r0, [r2]
|
||||
ldr r2, =0x00007c58
|
||||
adds r0, r2
|
||||
bl sub_81D1ED4
|
||||
b _0816653C
|
||||
.pool
|
||||
_0816640C:
|
||||
bl ResetSpriteData
|
||||
bl FreeAllSpritePalettes
|
||||
b _0816653C
|
||||
_08166416:
|
||||
movs r0, 0
|
||||
bl SetVBlankCallback
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
movs r1, 0xC0
|
||||
lsls r1, 19
|
||||
ldr r2, =0x05006000
|
||||
mov r0, sp
|
||||
bl CpuSet
|
||||
b _0816653C
|
||||
.pool
|
||||
_08166434:
|
||||
movs r0, 0
|
||||
bl ResetBgsAndClearDma3BusyFlags
|
||||
ldr r1, =gUnknown_085DFCCC
|
||||
movs r0, 0
|
||||
movs r2, 0x4
|
||||
bl InitBgsFromTemplates
|
||||
ldr r0, =gUnknown_085DFCDC
|
||||
bl InitWindows
|
||||
bl DeactivateAllTextPrinters
|
||||
movs r0, 0
|
||||
movs r1, 0x97
|
||||
movs r2, 0xE0
|
||||
bl sub_809882C
|
||||
b _0816653C
|
||||
.pool
|
||||
_08166464:
|
||||
ldr r1, [r2]
|
||||
b _08166540
|
||||
_08166468:
|
||||
bl sub_8168328
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08166556
|
||||
b _0816653C
|
||||
_08166474:
|
||||
ldr r1, =gKeyRepeatStartDelay
|
||||
movs r0, 0x14
|
||||
strh r0, [r1]
|
||||
bl sub_8167420
|
||||
b _0816653C
|
||||
.pool
|
||||
_08166484:
|
||||
bl sub_8167930
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08166556
|
||||
b _0816653C
|
||||
_08166490:
|
||||
movs r0, 0
|
||||
bl sub_8167608
|
||||
bl sub_8167760
|
||||
b _0816653C
|
||||
_0816649C:
|
||||
ldr r0, =gUnknown_0203BCAC
|
||||
ldr r0, [r0]
|
||||
ldr r1, =0x00007b0e
|
||||
adds r0, r1
|
||||
bl sub_81D312C
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08166556
|
||||
b _0816653C
|
||||
.pool
|
||||
_081664B8:
|
||||
ldr r1, [r2]
|
||||
b _08166540
|
||||
_081664BC:
|
||||
ldr r5, =gUnknown_0203BCAC
|
||||
ldr r1, [r5]
|
||||
ldr r4, =0x00007c58
|
||||
adds r0, r1, r4
|
||||
ldr r2, =0x00007c6c
|
||||
adds r1, r2
|
||||
bl sub_81D2754
|
||||
ldr r0, [r5]
|
||||
adds r0, r4
|
||||
bl sub_81D20AC
|
||||
b _0816653C
|
||||
.pool
|
||||
_081664E4:
|
||||
ldr r4, =gUnknown_0203BCAC
|
||||
ldr r0, [r4]
|
||||
ldr r1, =0x00007c58
|
||||
adds r0, r1
|
||||
bl sub_81D20BC
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08166556
|
||||
ldr r2, [r4]
|
||||
ldr r1, =0x00007c58
|
||||
adds r0, r2, r1
|
||||
adds r1, 0x14
|
||||
adds r2, r1
|
||||
adds r1, r2, 0
|
||||
bl sub_81D1F84
|
||||
b _0816653C
|
||||
.pool
|
||||
_08166510:
|
||||
ldr r0, =gUnknown_0203BCAC
|
||||
ldr r0, [r0]
|
||||
ldr r2, =0x00007c58
|
||||
adds r0, r2
|
||||
bl sub_81D2230
|
||||
b _0816653C
|
||||
.pool
|
||||
_08166528:
|
||||
movs r0, 0
|
||||
bl PutWindowTilemap
|
||||
movs r0, 0x1
|
||||
bl PutWindowTilemap
|
||||
movs r0, 0
|
||||
movs r1, 0x1
|
||||
bl sub_8167BA0
|
||||
_0816653C:
|
||||
ldr r0, =gUnknown_0203BC90
|
||||
ldr r1, [r0]
|
||||
_08166540:
|
||||
adds r1, 0x50
|
||||
ldrb r0, [r1]
|
||||
adds r0, 0x1
|
||||
strb r0, [r1]
|
||||
b _08166556
|
||||
.pool
|
||||
_08166550:
|
||||
ldr r0, =map_warp_consider_1_to_outside_or_stair_or_dive
|
||||
bl sub_816636C
|
||||
_08166556:
|
||||
add sp, 0x4
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_8166380
|
||||
|
||||
thumb_func_start map_warp_consider_1_to_outside_or_stair_or_dive
|
||||
map_warp_consider_1_to_outside_or_stair_or_dive: @ 8166564
|
||||
thumb_func_start sub_8166564
|
||||
sub_8166564: @ 8166564
|
||||
push {r4,lr}
|
||||
sub sp, 0x4
|
||||
ldr r4, =gUnknown_0203BC90
|
||||
@ -407,7 +91,7 @@ _08166610:
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end map_warp_consider_1_to_outside_or_stair_or_dive
|
||||
thumb_func_end sub_8166564
|
||||
|
||||
thumb_func_start sub_8166634
|
||||
sub_8166634: @ 8166634
|
||||
@ -632,7 +316,7 @@ _08166838:
|
||||
adds r0, r1
|
||||
ldrb r0, [r0]
|
||||
bl sub_81672A4
|
||||
ldr r1, =gUnknown_0203BC9C
|
||||
ldr r1, =gPokeblockMonId
|
||||
strb r0, [r1]
|
||||
ldr r1, =gUnknown_0203BC94
|
||||
ldr r2, [r5]
|
||||
@ -684,9 +368,9 @@ _08166888:
|
||||
str r5, [r4]
|
||||
bl FreeAllWindowBuffers
|
||||
ldr r1, =gMain
|
||||
ldr r0, =sub_816624C
|
||||
ldr r0, =CB2_ReturnAndChooseMonToGivePokeblock
|
||||
str r0, [r1, 0x8]
|
||||
bl sub_8179D70
|
||||
bl CB2_PreparePokeblockFeedScene
|
||||
_081668D4:
|
||||
add sp, 0x4
|
||||
pop {r4,r5}
|
||||
@ -728,7 +412,7 @@ _0816693C:
|
||||
ldr r0, [r0]
|
||||
ldr r1, =0x00008041
|
||||
adds r0, r1
|
||||
ldr r1, =gUnknown_0203BC9C
|
||||
ldr r1, =gPokeblockMonId
|
||||
ldrb r0, [r0]
|
||||
ldrb r1, [r1]
|
||||
cmp r0, r1
|
||||
@ -1695,7 +1379,7 @@ sub_8167184: @ 8167184
|
||||
adds r0, r3, 0
|
||||
adds r0, 0x6E
|
||||
strh r1, [r0]
|
||||
ldr r0, =gUnknown_0203BC9E
|
||||
ldr r0, =gPokeblockGain
|
||||
movs r1, 0
|
||||
ldrsh r0, [r0, r1]
|
||||
cmp r0, 0
|
||||
|
@ -4803,14 +4803,14 @@ gBattleTerrainTable:: @ 831ABA8
|
||||
.4byte gUnknown_08D7C10C
|
||||
|
||||
@ building
|
||||
.4byte gUnknown_08D7C440
|
||||
.4byte gBattleTerrainTiles_Building
|
||||
.4byte gUnknown_08D7CA28
|
||||
.4byte gUnknown_08D820D4
|
||||
.4byte gUnknown_08D824E4
|
||||
.4byte gUnknown_08D7DEB4
|
||||
|
||||
@ plain
|
||||
.4byte gUnknown_08D7C440
|
||||
.4byte gBattleTerrainTiles_Building
|
||||
.4byte gUnknown_08D7CA28
|
||||
.4byte gUnknown_08D820D4
|
||||
.4byte gUnknown_08D824E4
|
||||
|
@ -68,10 +68,10 @@ gUnknown_085B26A4:: @ 85B26A4
|
||||
gUnknown_085B26F0:: @ 85B26F0
|
||||
.incbin "baserom.gba", 0x5b26f0, 0x4
|
||||
|
||||
gUnknown_085B26F4:: @ 85B26F4
|
||||
gPokeblockCase_SpriteSheet:: @ 85B26F4
|
||||
.incbin "baserom.gba", 0x5b26f4, 0x8
|
||||
|
||||
gUnknown_085B26FC:: @ 85B26FC
|
||||
gPokeblockCase_SpritePal:: @ 85B26FC
|
||||
.incbin "baserom.gba", 0x5b26fc, 0x8
|
||||
|
||||
gUnknown_085B2704:: @ 85B2704
|
||||
|
@ -331,10 +331,10 @@ gUnknown_08D7C154:: @ 8D7C154
|
||||
gUnknown_08D7C404:: @ 8D7C404
|
||||
.incbin "baserom.gba", 0xd7c404, 0x3c
|
||||
|
||||
gUnknown_08D7C440:: @ 8D7C440
|
||||
gBattleTerrainTiles_Building:: @ 8D7C440
|
||||
.incbin "baserom.gba", 0xd7c440, 0x5ac
|
||||
|
||||
gUnknown_08D7C9EC:: @ 8D7C9EC
|
||||
gBattleTerrainPalette_Frontier:: @ 8D7C9EC
|
||||
.incbin "baserom.gba", 0xd7c9ec, 0x3c
|
||||
|
||||
gUnknown_08D7CA28:: @ 8D7CA28
|
||||
|
@ -21,23 +21,23 @@ gUnknown_085F0550:: @ 85F0550
|
||||
gUnknown_085F0558:: @ 85F0558
|
||||
.incbin "baserom.gba", 0x5f0558, 0x10
|
||||
|
||||
gUnknown_085F0568:: @ 85F0568
|
||||
sPokeblocksPals:: @ 85F0568
|
||||
.incbin "baserom.gba", 0x5f0568, 0x48
|
||||
|
||||
gUnknown_085F05B0:: @ 85F05B0
|
||||
sSpriteAffineAnimTable_85F05B0:: @ 85F05B0
|
||||
.incbin "baserom.gba", 0x5f05b0, 0xb4
|
||||
|
||||
gUnknown_085F0664:: @ 85F0664
|
||||
sSpriteAffineAnimTable_85F0664:: @ 85F0664
|
||||
.incbin "baserom.gba", 0x5f0664, 0x4
|
||||
|
||||
gUnknown_085F0668:: @ 85F0668
|
||||
sSpriteAffineAnimTable_85F0668:: @ 85F0668
|
||||
.incbin "baserom.gba", 0x5f0668, 0x4
|
||||
|
||||
gUnknown_085F066C:: @ 85F066C
|
||||
sSpriteAffineAnimTable_85F066C:: @ 85F066C
|
||||
.incbin "baserom.gba", 0x5f066c, 0x34
|
||||
|
||||
gUnknown_085F06A0:: @ 85F06A0
|
||||
gPokeblock_SpriteSheet:: @ 85F06A0
|
||||
.incbin "baserom.gba", 0x5f06a0, 0x8
|
||||
|
||||
gUnknown_085F06A8:: @ 85F06A8
|
||||
sThrownPokeblockSpriteTemplate:: @ 85F06A8
|
||||
.incbin "baserom.gba", 0x5f06a8, 0x18
|
||||
|
@ -16,5 +16,9 @@ void sub_812225C(u16 *, u16 *, u8, u8);
|
||||
void sub_8122298(u16 *, u16 *, u8, u8, u8);
|
||||
void sub_8121F68(u8 taskId, const struct YesNoFuncTable *data);
|
||||
bool8 sub_81221AC(void);
|
||||
void ResetVramOamAndBgCntRegs(void);
|
||||
void SetVBlankHBlankCallbacksToNull(void);
|
||||
void ResetAllBgsCoordinates(void);
|
||||
bool16 RunTextPrintersRetIsActive(u8 textPrinterId);
|
||||
|
||||
#endif //GUARD_MENU_HELPERS_H
|
||||
|
@ -1,7 +1,8 @@
|
||||
#ifndef GUARD_PARTY_MENU_H
|
||||
#define GUARD_PARTY_MENU_H
|
||||
|
||||
enum {
|
||||
enum
|
||||
{
|
||||
AILMENT_NONE,
|
||||
AILMENT_PSN,
|
||||
AILMENT_PRZ,
|
||||
@ -14,5 +15,6 @@ bool8 pokemon_has_move(struct Pokemon *, u16);
|
||||
void sub_81B58A8(void);
|
||||
void DoWallyTutorialBagMenu(void);
|
||||
u8 pokemon_ailments_get_primary(u32 status);
|
||||
u8 *GetMonNickname(struct Pokemon *mon, u8 *dst);
|
||||
|
||||
#endif // GUARD_PARTY_MENU_H
|
||||
|
@ -1,6 +1,8 @@
|
||||
#ifndef GUARD_POKEBLOCK_H
|
||||
#define GUARD_POKEBLOCK_H
|
||||
|
||||
#define TAG_POKEBLOCK_GFX 0x39E2
|
||||
|
||||
enum
|
||||
{
|
||||
PBLOCK_CLR_BLACK,
|
||||
@ -22,12 +24,22 @@ enum
|
||||
PBLOCK_FEEL,
|
||||
};
|
||||
|
||||
// use pokeblock
|
||||
void ChooseMonToGivePokeblock(struct Pokeblock *pokeblock, void (*callback)(void));
|
||||
|
||||
// pokeblock feed
|
||||
void CB2_PreparePokeblockFeedScene(void);
|
||||
|
||||
// pokeblock
|
||||
u8 CreatePokeblockCaseSprite(s16 x, s16 y, u8 subpriority);
|
||||
u8 GetPokeblockData(const struct Pokeblock *pokeblock, u8 dataId);
|
||||
void ClearPokeblocks(void);
|
||||
s8 GetFirstFreePokeblockSlot(void);
|
||||
bool32 AddPokeblock(struct Pokeblock *pokeblock);
|
||||
u8 GetHighestPokeblocksFlavorLevel(const struct Pokeblock *pokeblock);
|
||||
u8 GetPokeblocksFeel(const struct Pokeblock *pokeblock);
|
||||
u8 GetPokeblocksFlavor(const struct Pokeblock *pokeblock);
|
||||
s16 PokeblockGetGain(u8, const struct Pokeblock *);
|
||||
s16 PokeblockGetGain(u8, const struct Pokeblock *pokeblock);
|
||||
void PokeblockCopyName(const struct Pokeblock *pokeblock, u8 *dst);
|
||||
|
||||
#endif // GUARD_POKEBLOCK_H
|
||||
|
@ -2,5 +2,15 @@
|
||||
#define GUARD_POKENAV_H
|
||||
|
||||
bool8 sub_81D5C18(void);
|
||||
bool8 sub_81D20BC(void *arg0);
|
||||
bool8 sub_81D312C(void *arg0);
|
||||
void sub_81D1ED4(void *arg0);
|
||||
void sub_81D2108(void *arg0);
|
||||
void sub_81D20AC(void *arg0);
|
||||
void sub_81D2230(void *arg0);
|
||||
void sub_81D3464(void *arg0);
|
||||
void sub_81D3480(void *arg0, u8 arg1);
|
||||
void sub_81D2754(void *arg0, void *arg1);
|
||||
void sub_81D1F84(void *arg0, void *arg1, void *arg2);
|
||||
|
||||
#endif //GUARD_POKENAV_H
|
||||
|
@ -84,5 +84,8 @@ extern const u8 gText_RegisteredDataDeleted[];
|
||||
extern const u8 gUnknown_085EA79D[];
|
||||
extern const u8 gText_PkmnFainted3[];
|
||||
extern const u8 gText_Coins[];
|
||||
extern const u8 gText_Var1AteTheVar2[];
|
||||
extern const u8 gText_Var1HappilyAteVar2[];
|
||||
extern const u8 gText_Var1DisdainfullyAteVar2[];
|
||||
|
||||
#endif //GUARD_STRINGS_H
|
||||
|
@ -222,6 +222,7 @@ SECTIONS {
|
||||
asm/mystery_event_menu.o(.text);
|
||||
src/save_failed_screen.o(.text);
|
||||
src/braille_puzzles.o(.text);
|
||||
src/pokeblock_feed.o(.text);
|
||||
asm/pokeblock_feed.o(.text);
|
||||
src/clear_save_data_screen.o(.text);
|
||||
asm/intro_credits_graphics.o(.text);
|
||||
|
472
src/pokeblock_feed.c
Normal file
472
src/pokeblock_feed.c
Normal file
@ -0,0 +1,472 @@
|
||||
#include "global.h"
|
||||
#include "pokeblock.h"
|
||||
#include "sprite.h"
|
||||
#include "task.h"
|
||||
#include "palette.h"
|
||||
#include "menu.h"
|
||||
#include "malloc.h"
|
||||
#include "pokemon.h"
|
||||
#include "blend_palette.h"
|
||||
#include "main.h"
|
||||
#include "menu_helpers.h"
|
||||
#include "bg.h"
|
||||
#include "gpu_regs.h"
|
||||
#include "data2.h"
|
||||
#include "decompress.h"
|
||||
#include "event_data.h"
|
||||
#include "strings.h"
|
||||
#include "string_util.h"
|
||||
#include "new_menu_helpers.h"
|
||||
#include "party_menu.h"
|
||||
#include "m4a.h"
|
||||
#include "sound.h"
|
||||
#include "battle.h" // to get rid of once gMonSpritesGfxPtr is put elsewhere
|
||||
|
||||
struct PokeblockFeedStruct
|
||||
{
|
||||
u8 field_0[0x48];
|
||||
u8 tilemapBuffer[0x1008];
|
||||
u8 field_1050;
|
||||
u8 field_1051;
|
||||
u8 field_1052;
|
||||
bool8 noMonFlip;
|
||||
u16 species;
|
||||
u16 field_1056;
|
||||
u16 field_1058;
|
||||
u8 nature;
|
||||
u8 monSpriteId_;
|
||||
u8 field_105C;
|
||||
u8 monSpriteId;
|
||||
u8 pokeblockCaseSpriteId;
|
||||
u8 pokeblockSpriteId;
|
||||
u8 field_1060[0x1E];
|
||||
s16 loadGfxState;
|
||||
u8 somefield[2];
|
||||
};
|
||||
|
||||
extern u8 gPokeblockMonId;
|
||||
extern u16 gSpecialVar_ItemId;
|
||||
extern s16 gPokeblockGain;
|
||||
extern struct MusicPlayerInfo gMPlay_BGM;
|
||||
extern struct SpriteTemplate gUnknown_0202499C;
|
||||
|
||||
extern struct PokeblockFeedStruct *sPokeblockFeed;
|
||||
extern struct CompressedSpritePalette sPokeblockSpritePal;
|
||||
|
||||
extern bool8 sub_81221EC(void);
|
||||
extern void sub_806A068(u16, u8);
|
||||
|
||||
// this file's functions
|
||||
static void HandleInitBackgrounds(void);
|
||||
static void HandleInitWindows(void);
|
||||
static bool8 LoadMonAndSceneGfx(struct Pokemon *mon);
|
||||
u8 CreatePokeblockCaseSpriteForFeeding(void);
|
||||
static u8 CreateMonSprite(struct Pokemon *mon);
|
||||
void LaunchPokeblockFeedTask(void);
|
||||
static void SetPokeblockSpritePal(u8 pokeblockCaseId);
|
||||
void sub_817A5CC(void);
|
||||
void sub_8148108(u8 spriteId, bool8 a1);
|
||||
u8 CreatePokeblockSprite(void);
|
||||
void DoPokeblockCaseThrowEffect(u8 spriteId, bool8 arg1);
|
||||
static void PrepareMonToMoveToPokeblock(u8 spriteId);
|
||||
void Task_HandleMonAtePokeblock(u8 taskId);
|
||||
void Task_PaletteFadeToReturn(u8 taskId);
|
||||
void sub_817A634(void);
|
||||
static void sub_817A468(struct Sprite *sprite);
|
||||
|
||||
static void CB2_PokeblockFeed(void)
|
||||
{
|
||||
RunTasks();
|
||||
AnimateSprites();
|
||||
BuildOamBuffer();
|
||||
do_scheduled_bg_tilemap_copies_to_vram();
|
||||
UpdatePaletteFade();
|
||||
}
|
||||
|
||||
static void VBlankCB_PokeblockFeed(void)
|
||||
{
|
||||
LoadOam();
|
||||
ProcessSpriteCopyRequests();
|
||||
TransferPlttBuffer();
|
||||
}
|
||||
|
||||
bool8 TransitionToPokeblockFeedScene(void)
|
||||
{
|
||||
switch (gMain.state)
|
||||
{
|
||||
case 0:
|
||||
sPokeblockFeed = AllocZeroed(sizeof(*sPokeblockFeed));
|
||||
SetVBlankHBlankCallbacksToNull();
|
||||
clear_scheduled_bg_copies_to_vram();
|
||||
gMain.state++;
|
||||
break;
|
||||
case 1:
|
||||
ResetPaletteFade();
|
||||
gPaletteFade.bufferTransferDisabled = 1;
|
||||
gMain.state++;
|
||||
break;
|
||||
case 2:
|
||||
ResetSpriteData();
|
||||
gMain.state++;
|
||||
break;
|
||||
case 3:
|
||||
FreeAllSpritePalettes();
|
||||
gMain.state++;
|
||||
break;
|
||||
case 4:
|
||||
AllocateMonSpritesGfx();
|
||||
gMain.state++;
|
||||
break;
|
||||
case 5:
|
||||
HandleInitBackgrounds();
|
||||
gMain.state++;
|
||||
break;
|
||||
case 6:
|
||||
HandleInitWindows();
|
||||
gMain.state++;
|
||||
break;
|
||||
case 7:
|
||||
if (LoadMonAndSceneGfx(&gPlayerParty[gPokeblockMonId]))
|
||||
{
|
||||
gMain.state++;
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
sPokeblockFeed->pokeblockCaseSpriteId = CreatePokeblockCaseSpriteForFeeding();
|
||||
gMain.state++;
|
||||
break;
|
||||
case 9:
|
||||
sPokeblockFeed->monSpriteId = CreateMonSprite(&gPlayerParty[gPokeblockMonId]);
|
||||
gMain.state++;
|
||||
break;
|
||||
case 10:
|
||||
SetWindowBorderStyle(0, 1, 1, 14);
|
||||
gMain.state++;
|
||||
break;
|
||||
case 11:
|
||||
LaunchPokeblockFeedTask();
|
||||
gMain.state++;
|
||||
break;
|
||||
case 12:
|
||||
BlendPalettes(-1, 0x10, 0);
|
||||
gMain.state++;
|
||||
break;
|
||||
case 13:
|
||||
BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
|
||||
gPaletteFade.bufferTransferDisabled = 0;
|
||||
gMain.state++;
|
||||
break;
|
||||
default:
|
||||
SetVBlankCallback(VBlankCB_PokeblockFeed);
|
||||
SetMainCallback2(CB2_PokeblockFeed);
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void CB2_PreparePokeblockFeedScene(void)
|
||||
{
|
||||
while (1)
|
||||
{
|
||||
if (sub_81221EC() == TRUE)
|
||||
break;
|
||||
if (TransitionToPokeblockFeedScene() == TRUE)
|
||||
break;
|
||||
if (sub_81221AC() == TRUE)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
extern const struct BgTemplate gUnknown_085F0550[2];
|
||||
extern const u8 gBattleTerrainPalette_Frontier[];
|
||||
extern const u8 gBattleTerrainTiles_Building[];
|
||||
extern const u8 gUnknown_08D9BA44[];
|
||||
extern const struct CompressedSpriteSheet gPokeblockCase_SpriteSheet;
|
||||
extern const struct CompressedSpriteSheet gPokeblock_SpriteSheet;
|
||||
extern const struct CompressedSpritePalette gPokeblockCase_SpritePal;
|
||||
extern const struct CompressedSpriteSheet gMonFrontPicTable[];
|
||||
extern const struct WindowTemplate gUnknown_085F0558[];
|
||||
extern const u16 gUnknown_0860F074[];
|
||||
extern const u8 *sPokeblocksPals[];
|
||||
extern const union AffineAnimCmd * const sSpriteAffineAnimTable_85F05B0[];
|
||||
extern const union AffineAnimCmd * const sSpriteAffineAnimTable_85F0664[];
|
||||
extern const union AffineAnimCmd * const sSpriteAffineAnimTable_85F0668[];
|
||||
extern const union AffineAnimCmd * const sSpriteAffineAnimTable_85F066C[];
|
||||
extern const struct SpriteTemplate sThrownPokeblockSpriteTemplate;
|
||||
|
||||
static void HandleInitBackgrounds(void)
|
||||
{
|
||||
ResetVramOamAndBgCntRegs();
|
||||
|
||||
ResetBgsAndClearDma3BusyFlags(0);
|
||||
InitBgsFromTemplates(0, gUnknown_085F0550, ARRAY_COUNT(gUnknown_085F0550));
|
||||
SetBgTilemapBuffer(1, sPokeblockFeed->tilemapBuffer);
|
||||
ResetAllBgsCoordinates();
|
||||
schedule_bg_copy_tilemap_to_vram(1);
|
||||
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
|
||||
|
||||
ShowBg(0);
|
||||
ShowBg(1);
|
||||
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||
}
|
||||
|
||||
static bool8 LoadMonAndSceneGfx(struct Pokemon *mon)
|
||||
{
|
||||
u16 species;
|
||||
u32 personality, trainerId;
|
||||
const struct CompressedSpritePalette *palette;
|
||||
|
||||
switch (sPokeblockFeed->loadGfxState)
|
||||
{
|
||||
case 0:
|
||||
species = GetMonData(mon, MON_DATA_SPECIES2);
|
||||
personality = GetMonData(mon, MON_DATA_PERSONALITY);
|
||||
HandleLoadSpecialPokePic_2(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[1], species, personality);
|
||||
sPokeblockFeed->loadGfxState++;
|
||||
break;
|
||||
case 1:
|
||||
species = GetMonData(mon, MON_DATA_SPECIES2);
|
||||
personality = GetMonData(mon, MON_DATA_PERSONALITY);
|
||||
trainerId = GetMonData(mon, MON_DATA_OT_ID);
|
||||
palette = GetMonSpritePalStructFromOtIdPersonality(species, trainerId, personality);
|
||||
|
||||
LoadCompressedObjectPalette(palette);
|
||||
sub_806A068(palette->tag, 1);
|
||||
sPokeblockFeed->loadGfxState++;
|
||||
break;
|
||||
case 2:
|
||||
LoadCompressedObjectPic(&gPokeblockCase_SpriteSheet);
|
||||
sPokeblockFeed->loadGfxState++;
|
||||
break;
|
||||
case 3:
|
||||
LoadCompressedObjectPalette(&gPokeblockCase_SpritePal);
|
||||
sPokeblockFeed->loadGfxState++;
|
||||
break;
|
||||
case 4:
|
||||
LoadCompressedObjectPic(&gPokeblock_SpriteSheet);
|
||||
sPokeblockFeed->loadGfxState++;
|
||||
break;
|
||||
case 5:
|
||||
SetPokeblockSpritePal(gSpecialVar_ItemId);
|
||||
LoadCompressedObjectPalette(&sPokeblockSpritePal);
|
||||
sPokeblockFeed->loadGfxState++;
|
||||
break;
|
||||
case 6:
|
||||
reset_temp_tile_data_buffers();
|
||||
decompress_and_copy_tile_data_to_vram(1, gBattleTerrainTiles_Building, 0, 0, 0);
|
||||
sPokeblockFeed->loadGfxState++;
|
||||
break;
|
||||
case 7:
|
||||
if (free_temp_tile_data_buffers_if_possible() != TRUE)
|
||||
{
|
||||
LZDecompressWram(gUnknown_08D9BA44, sPokeblockFeed->tilemapBuffer);
|
||||
sPokeblockFeed->loadGfxState++;
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
LoadCompressedPalette(gBattleTerrainPalette_Frontier, 0x20, 0x60);
|
||||
sPokeblockFeed->loadGfxState = 0;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
extern void sub_809882C(u8, u16, u8);
|
||||
|
||||
static void HandleInitWindows(void)
|
||||
{
|
||||
InitWindows(gUnknown_085F0558);
|
||||
DeactivateAllTextPrinters();
|
||||
sub_809882C(0, 1, 0xE0);
|
||||
LoadPalette(gUnknown_0860F074, 0xF0, 0x20);
|
||||
FillWindowPixelBuffer(0, 0);
|
||||
PutWindowTilemap(0);
|
||||
schedule_bg_copy_tilemap_to_vram(0);
|
||||
}
|
||||
|
||||
static void SetPokeblockSpritePal(u8 pokeblockCaseId)
|
||||
{
|
||||
u8 colorId = GetPokeblockData(&gSaveBlock1Ptr->pokeblocks[pokeblockCaseId], PBLOCK_COLOR);
|
||||
sPokeblockSpritePal.data = sPokeblocksPals[colorId - 1];
|
||||
sPokeblockSpritePal.tag = TAG_POKEBLOCK_GFX;
|
||||
}
|
||||
|
||||
#define tFrames data[0]
|
||||
#define tData1 data[1]
|
||||
|
||||
void Task_HandlePokeblockFeed(u8 taskId)
|
||||
{
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
switch (gTasks[taskId].tFrames)
|
||||
{
|
||||
case 0:
|
||||
sPokeblockFeed->field_1050 = 0;
|
||||
sPokeblockFeed->field_1058 = 0;
|
||||
sub_817A5CC();
|
||||
break;
|
||||
case 255:
|
||||
DoPokeblockCaseThrowEffect(sPokeblockFeed->pokeblockCaseSpriteId, gTasks[taskId].tData1);
|
||||
break;
|
||||
case 269:
|
||||
sPokeblockFeed->pokeblockSpriteId = CreatePokeblockSprite();
|
||||
break;
|
||||
case 281:
|
||||
PrepareMonToMoveToPokeblock(sPokeblockFeed->monSpriteId);
|
||||
break;
|
||||
case 297:
|
||||
gTasks[taskId].func = Task_HandleMonAtePokeblock;
|
||||
return;
|
||||
}
|
||||
|
||||
if (sPokeblockFeed->field_1058 < sPokeblockFeed->field_1056)
|
||||
sub_817A634();
|
||||
else if (sPokeblockFeed->field_1058 == sPokeblockFeed->field_1056)
|
||||
gTasks[taskId].tFrames = 254;
|
||||
|
||||
sPokeblockFeed->field_1058++;
|
||||
gTasks[taskId].tFrames++;
|
||||
}
|
||||
}
|
||||
|
||||
void LaunchPokeblockFeedTask(void)
|
||||
{
|
||||
u8 taskId = CreateTask(Task_HandlePokeblockFeed, 0);
|
||||
gTasks[taskId].tFrames = 0;
|
||||
gTasks[taskId].tData1 = 1;
|
||||
}
|
||||
|
||||
void Task_WaitForAtePokeblockText(u8 taskId)
|
||||
{
|
||||
if (RunTextPrintersRetIsActive(0) != TRUE)
|
||||
gTasks[taskId].func = Task_PaletteFadeToReturn;
|
||||
}
|
||||
|
||||
void Task_HandleMonAtePokeblock(u8 taskId)
|
||||
{
|
||||
struct Pokemon *mon = &gPlayerParty[gPokeblockMonId];
|
||||
struct Pokeblock *pokeblock = &gSaveBlock1Ptr->pokeblocks[gSpecialVar_ItemId];
|
||||
|
||||
gPokeblockGain = PokeblockGetGain(GetNature(mon), pokeblock);
|
||||
GetMonNickname(mon, gStringVar1);
|
||||
PokeblockCopyName(pokeblock, gStringVar2);
|
||||
|
||||
if (gPokeblockGain == 0)
|
||||
StringExpandPlaceholders(gStringVar4, gText_Var1AteTheVar2);
|
||||
else if (gPokeblockGain > 0)
|
||||
StringExpandPlaceholders(gStringVar4, gText_Var1HappilyAteVar2);
|
||||
else
|
||||
StringExpandPlaceholders(gStringVar4, gText_Var1DisdainfullyAteVar2);
|
||||
|
||||
gTextFlags.flag_0 = 1;
|
||||
AddTextPrinterParametrized(0, 1, gStringVar4, GetPlayerTextSpeed(), NULL, 2, 1, 3);
|
||||
gTasks[taskId].func = Task_WaitForAtePokeblockText;
|
||||
}
|
||||
|
||||
void Task_ReturnAfterPaletteFade(u8 taskId)
|
||||
{
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
ResetSpriteData();
|
||||
FreeAllSpritePalettes();
|
||||
m4aMPlayVolumeControl(&gMPlay_BGM, -1, 256);
|
||||
SetMainCallback2(gMain.savedCallback);
|
||||
DestroyTask(taskId);
|
||||
FreeAllWindowBuffers();
|
||||
Free(sPokeblockFeed);
|
||||
FreeMonSpritesGfx();
|
||||
}
|
||||
}
|
||||
|
||||
void Task_PaletteFadeToReturn(u8 taskId)
|
||||
{
|
||||
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
|
||||
gTasks[taskId].func = Task_ReturnAfterPaletteFade;
|
||||
}
|
||||
|
||||
static u8 CreateMonSprite(struct Pokemon* mon)
|
||||
{
|
||||
u16 species = GetMonData(mon, MON_DATA_SPECIES2);
|
||||
u8 spriteId = CreateSprite(&gUnknown_0202499C, 48, 80, 2);
|
||||
|
||||
sPokeblockFeed->species = species;
|
||||
sPokeblockFeed->monSpriteId_ = spriteId;
|
||||
sPokeblockFeed->nature = GetNature(mon);
|
||||
gSprites[spriteId].data2 = species;
|
||||
gSprites[spriteId].callback = SpriteCallbackDummy;
|
||||
|
||||
sPokeblockFeed->noMonFlip = TRUE;
|
||||
if (!IsPokeSpriteNotFlipped(species))
|
||||
{
|
||||
gSprites[spriteId].affineAnims = sSpriteAffineAnimTable_85F05B0;
|
||||
gSprites[spriteId].oam.affineMode = 3;
|
||||
CalcCenterToCornerVec(&gSprites[spriteId], gSprites[spriteId].oam.shape, gSprites[spriteId].oam.size, gSprites[spriteId].oam.affineMode);
|
||||
sPokeblockFeed->noMonFlip = FALSE;
|
||||
}
|
||||
|
||||
return spriteId;
|
||||
}
|
||||
|
||||
static void PrepareMonToMoveToPokeblock(u8 spriteId)
|
||||
{
|
||||
gSprites[spriteId].pos1.x = 48;
|
||||
gSprites[spriteId].pos1.y = 80;
|
||||
gSprites[spriteId].data0 = -8;
|
||||
gSprites[spriteId].data1 = 1;
|
||||
gSprites[spriteId].callback = sub_817A468;
|
||||
}
|
||||
|
||||
static void sub_817A468(struct Sprite* sprite)
|
||||
{
|
||||
sprite->pos1.x += 4;
|
||||
sprite->pos1.y += sprite->data0;
|
||||
sprite->data0 += sprite->data1;
|
||||
|
||||
if (sprite->data0 == 0)
|
||||
PlayCry1(sprite->data2, 0);
|
||||
if (sprite->data0 == 9)
|
||||
sprite->callback = SpriteCallbackDummy;
|
||||
}
|
||||
|
||||
u8 CreatePokeblockCaseSpriteForFeeding(void)
|
||||
{
|
||||
u8 spriteId = CreatePokeblockCaseSprite(188, 100, 2);
|
||||
gSprites[spriteId].oam.affineMode = 1;
|
||||
gSprites[spriteId].affineAnims = sSpriteAffineAnimTable_85F0664;
|
||||
gSprites[spriteId].callback = SpriteCallbackDummy;
|
||||
InitSpriteAffineAnim(&gSprites[spriteId]);
|
||||
return spriteId;
|
||||
}
|
||||
|
||||
void DoPokeblockCaseThrowEffect(u8 spriteId, bool8 a1)
|
||||
{
|
||||
FreeOamMatrix(gSprites[spriteId].oam.matrixNum);
|
||||
gSprites[spriteId].oam.affineMode = 3;
|
||||
|
||||
if (!a1)
|
||||
gSprites[spriteId].affineAnims = sSpriteAffineAnimTable_85F0668;
|
||||
else
|
||||
gSprites[spriteId].affineAnims = sSpriteAffineAnimTable_85F066C;
|
||||
|
||||
InitSpriteAffineAnim(&gSprites[spriteId]);
|
||||
}
|
||||
|
||||
u8 CreatePokeblockSprite(void)
|
||||
{
|
||||
u8 spriteId = CreateSprite(&sThrownPokeblockSpriteTemplate, 174, 84, 1);
|
||||
gSprites[spriteId].data0 = -12;
|
||||
gSprites[spriteId].data1 = 1;
|
||||
return spriteId;
|
||||
}
|
||||
|
||||
static void SpriteCB_ThrownPokeblock(struct Sprite* sprite)
|
||||
{
|
||||
sprite->pos1.x -= 4;
|
||||
sprite->pos1.y += sprite->data0;
|
||||
sprite->data0 += sprite->data1;
|
||||
if (sprite->data0 == 10)
|
||||
DestroySprite(sprite);
|
||||
}
|
@ -73,7 +73,7 @@ extern void do_scheduled_bg_tilemap_copies_to_vram(void);
|
||||
extern u8 sub_81221EC();
|
||||
extern u8 sub_81221AC();
|
||||
extern void SetVBlankHBlankCallbacksToNull();
|
||||
extern void sub_8121DA0();
|
||||
extern void ResetVramOamAndBgCntRegs();
|
||||
extern void clear_scheduled_bg_copies_to_vram();
|
||||
extern void remove_some_task();
|
||||
extern void ResetBgsAndClearDma3BusyFlags(u32 leftoverFireRedLeafGreenVariable);
|
||||
@ -193,7 +193,7 @@ void sub_81C4A88();
|
||||
void sub_81C4280();
|
||||
void sub_81C0510(u8 taskId);
|
||||
void sub_81C171C(u8 taskId);
|
||||
void sub_8121E10();
|
||||
void ResetAllBgsCoordinates();
|
||||
u8 sub_81B205C(struct Pokemon* a);
|
||||
void sub_81C1DA4(u16 a, s16 b);
|
||||
void sub_81C1EFC(u16 a, s16 b, u16 c);
|
||||
@ -450,7 +450,7 @@ bool8 sub_81BFB10(void)
|
||||
{
|
||||
case 0:
|
||||
SetVBlankHBlankCallbacksToNull();
|
||||
sub_8121DA0();
|
||||
ResetVramOamAndBgCntRegs();
|
||||
clear_scheduled_bg_copies_to_vram();
|
||||
gMain.state++;
|
||||
break;
|
||||
@ -578,7 +578,7 @@ void sub_81BFE24()
|
||||
SetBgTilemapBuffer(1, &gUnknown_0203CF1C->unkTilemap2);
|
||||
SetBgTilemapBuffer(2, &gUnknown_0203CF1C->unkTilemap1);
|
||||
SetBgTilemapBuffer(3, &gUnknown_0203CF1C->unkTilemap0);
|
||||
sub_8121E10();
|
||||
ResetAllBgsCoordinates();
|
||||
schedule_bg_copy_tilemap_to_vram(1);
|
||||
schedule_bg_copy_tilemap_to_vram(2);
|
||||
schedule_bg_copy_tilemap_to_vram(3);
|
||||
|
@ -2,29 +2,69 @@
|
||||
#include "main.h"
|
||||
#include "pokeblock.h"
|
||||
#include "malloc.h"
|
||||
#include "palette.h"
|
||||
#include "pokenav.h"
|
||||
#include "unknown_task.h"
|
||||
#include "text.h"
|
||||
#include "bg.h"
|
||||
#include "window.h"
|
||||
#include "text_window.h"
|
||||
|
||||
struct UsePokeblockSubStruct
|
||||
{
|
||||
void *field_0;
|
||||
void (*field_0)(void);
|
||||
void (*callback)(void);
|
||||
struct Pokeblock *pokeblock;
|
||||
struct Pokemon *pokemon;
|
||||
u8 stringBuffer[0x40];
|
||||
u8 field_50;
|
||||
u8 field_51;
|
||||
u8 field_52;
|
||||
u8 field_53;
|
||||
u8 field_54;
|
||||
u8 field_55;
|
||||
u8 field_56;
|
||||
u8 field_57[5];
|
||||
u8 field_5c[5];
|
||||
u8 field_61[5];
|
||||
s16 field_66[5];
|
||||
};
|
||||
|
||||
struct UsePokeblockStruct1
|
||||
struct UsePokeblockStruct
|
||||
{
|
||||
u8 field_0[0x7FD0];
|
||||
u8 field_0[0x7C58];
|
||||
u8 field_7C58[0x378];
|
||||
struct UsePokeblockSubStruct info;
|
||||
};
|
||||
|
||||
extern struct UsePokeblockStruct1 *gUnknown_0203BCAC;
|
||||
extern struct UsePokeblockStruct *gUnknown_0203BCAC;
|
||||
extern struct UsePokeblockSubStruct *gUnknown_0203BC90;
|
||||
extern struct Pokeblock *gUnknown_0203BC98;
|
||||
extern void (*gUnknown_0203BC94)(void);
|
||||
extern u8 gPokeblockMonId;
|
||||
|
||||
extern u16 gKeyRepeatStartDelay;
|
||||
|
||||
// this file's functions
|
||||
void sub_816636C(void *arg0);
|
||||
void sub_816636C(void (*func)(void));
|
||||
void sub_8166380(void);
|
||||
void sub_816631C(void);
|
||||
void sub_81662C0(void);
|
||||
void sub_8166564(void);
|
||||
void sub_8166304(void);
|
||||
void sub_81668F8(void);
|
||||
void sub_8167420(void);
|
||||
void sub_8167760(void);
|
||||
u8 sub_81672E4(u8 arg0);
|
||||
bool8 sub_8168328(void);
|
||||
bool8 sub_8167930(void);
|
||||
void sub_8167608(u8 arg0);
|
||||
void sub_8167BA0(u16 arg0, u8 copyToVramMode);
|
||||
|
||||
void sub_8166204(struct Pokeblock *pokeblock, void (*callback)(void))
|
||||
extern const struct BgTemplate gUnknown_085DFCCC[4];
|
||||
extern const struct WindowTemplate gUnknown_085DFCDC[];
|
||||
|
||||
void ChooseMonToGivePokeblock(struct Pokeblock *pokeblock, void (*callback)(void))
|
||||
{
|
||||
gUnknown_0203BCAC = AllocZeroed(0x806C);
|
||||
gUnknown_0203BC90 = &gUnknown_0203BCAC->info;
|
||||
@ -33,3 +73,149 @@ void sub_8166204(struct Pokeblock *pokeblock, void (*callback)(void))
|
||||
sub_816636C(sub_8166380);
|
||||
SetMainCallback2(sub_816631C);
|
||||
}
|
||||
|
||||
void CB2_ReturnAndChooseMonToGivePokeblock(void)
|
||||
{
|
||||
gUnknown_0203BCAC = AllocZeroed(0x806C);
|
||||
gUnknown_0203BC90 = &gUnknown_0203BCAC->info;
|
||||
gUnknown_0203BC90->pokeblock = gUnknown_0203BC98;
|
||||
gUnknown_0203BC90->callback = gUnknown_0203BC94;
|
||||
gPokeblockMonId = sub_81672E4(gPokeblockMonId);
|
||||
gUnknown_0203BC90->field_56 = gPokeblockMonId < 4 ? 0 : 1;
|
||||
sub_816636C(sub_8166380);
|
||||
SetMainCallback2(sub_81662C0);
|
||||
}
|
||||
|
||||
void sub_81662C0(void)
|
||||
{
|
||||
gUnknown_0203BC90->field_0();
|
||||
AnimateSprites();
|
||||
BuildOamBuffer();
|
||||
UpdatePaletteFade();
|
||||
if (gUnknown_0203BC90->field_0 == sub_8166564)
|
||||
{
|
||||
gUnknown_0203BC90->field_50 = 0;
|
||||
SetMainCallback2(sub_8166304);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8166304(void)
|
||||
{
|
||||
sub_81668F8();
|
||||
AnimateSprites();
|
||||
BuildOamBuffer();
|
||||
UpdatePaletteFade();
|
||||
}
|
||||
|
||||
void sub_816631C(void)
|
||||
{
|
||||
gUnknown_0203BC90->field_0();
|
||||
AnimateSprites();
|
||||
BuildOamBuffer();
|
||||
RunTextPrinters();
|
||||
UpdatePaletteFade();
|
||||
}
|
||||
|
||||
void sub_8166340(void)
|
||||
{
|
||||
LoadOam();
|
||||
ProcessSpriteCopyRequests();
|
||||
TransferPlttBuffer();
|
||||
sub_81D2108(gUnknown_0203BCAC->field_7C58);
|
||||
sub_80BA0A8();
|
||||
}
|
||||
|
||||
void sub_816636C(void (*func)(void))
|
||||
{
|
||||
gUnknown_0203BC90->field_0 = func;
|
||||
gUnknown_0203BC90->field_50 = 0;
|
||||
}
|
||||
|
||||
void sub_8166380(void)
|
||||
{
|
||||
switch (gUnknown_0203BC90->field_50)
|
||||
{
|
||||
case 0:
|
||||
gUnknown_0203BCAC->field_0[0x7B10] = 0xFF;
|
||||
sub_81D1ED4(gUnknown_0203BCAC->field_7C58);
|
||||
gUnknown_0203BC90->field_50++;
|
||||
break;
|
||||
case 1:
|
||||
ResetSpriteData();
|
||||
FreeAllSpritePalettes();
|
||||
gUnknown_0203BC90->field_50++;
|
||||
break;
|
||||
case 2:
|
||||
SetVBlankCallback(NULL);
|
||||
CpuFill32(0, (void*)(VRAM), VRAM_SIZE);
|
||||
gUnknown_0203BC90->field_50++;
|
||||
break;
|
||||
case 3:
|
||||
ResetBgsAndClearDma3BusyFlags(0);
|
||||
InitBgsFromTemplates(0, gUnknown_085DFCCC, ARRAY_COUNT(gUnknown_085DFCCC));
|
||||
InitWindows(gUnknown_085DFCDC);
|
||||
DeactivateAllTextPrinters();
|
||||
sub_809882C(0, 0x97, 0xE0);
|
||||
gUnknown_0203BC90->field_50++;
|
||||
break;
|
||||
case 4:
|
||||
gUnknown_0203BC90->field_50++;
|
||||
break;
|
||||
case 5:
|
||||
if (!sub_8168328())
|
||||
{
|
||||
gUnknown_0203BC90->field_50++;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
gKeyRepeatStartDelay = 20;
|
||||
sub_8167420();
|
||||
gUnknown_0203BC90->field_50++;
|
||||
break;
|
||||
case 7:
|
||||
if (!sub_8167930())
|
||||
{
|
||||
gUnknown_0203BC90->field_50++;
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
sub_8167608(0);
|
||||
sub_8167760();
|
||||
gUnknown_0203BC90->field_50++;
|
||||
break;
|
||||
case 9:
|
||||
if (!sub_81D312C(&gUnknown_0203BCAC->field_0[0x7B0E]))
|
||||
{
|
||||
gUnknown_0203BC90->field_50++;
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
gUnknown_0203BC90->field_50++;
|
||||
break;
|
||||
case 11:
|
||||
sub_81D2754(gUnknown_0203BCAC->field_7C58, &gUnknown_0203BCAC->field_0[0x7C6C]);
|
||||
sub_81D20AC(gUnknown_0203BCAC->field_7C58);
|
||||
gUnknown_0203BC90->field_50++;
|
||||
break;
|
||||
case 12:
|
||||
if (!sub_81D20BC(gUnknown_0203BCAC->field_7C58))
|
||||
{
|
||||
sub_81D1F84(gUnknown_0203BCAC->field_7C58, &gUnknown_0203BCAC->field_7C58[0x14], &gUnknown_0203BCAC->field_7C58[0x14]);
|
||||
gUnknown_0203BC90->field_50++;
|
||||
}
|
||||
break;
|
||||
case 13:
|
||||
sub_81D2230(gUnknown_0203BCAC->field_7C58);
|
||||
gUnknown_0203BC90->field_50++;
|
||||
break;
|
||||
case 14:
|
||||
PutWindowTilemap(0);
|
||||
PutWindowTilemap(1);
|
||||
sub_8167BA0(0, 1);
|
||||
gUnknown_0203BC90->field_50++;
|
||||
break;
|
||||
case 15:
|
||||
sub_816636C(sub_8166564);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1315,10 +1315,10 @@ gUnknown_0203BC94: @ 203BC94
|
||||
gUnknown_0203BC98: @ 203BC98
|
||||
.space 0x4
|
||||
|
||||
gUnknown_0203BC9C: @ 203BC9C
|
||||
gPokeblockMonId: @ 203BC9C
|
||||
.space 0x2
|
||||
|
||||
gUnknown_0203BC9E: @ 203BC9E
|
||||
gPokeblockGain: @ 203BC9E
|
||||
.space 0x2
|
||||
|
||||
gUnknown_0203BCA0: @ 203BCA0
|
||||
@ -1393,10 +1393,10 @@ gUnknown_0203BCF8: @ 203BCF8
|
||||
gBraillePuzzleCallbackFlag: @ 203BD14
|
||||
.space 0x4
|
||||
|
||||
gUnknown_0203BD18: @ 203BD18
|
||||
sPokeblockFeed: @ 203BD18
|
||||
.space 0x4
|
||||
|
||||
gUnknown_0203BD1C: @ 203BD1C
|
||||
sPokeblockSpritePal: @ 203BD1C
|
||||
.space 0x8
|
||||
|
||||
gUnknown_0203BD24: @ 203BD24
|
||||
|
Loading…
Reference in New Issue
Block a user