mirror of
https://github.com/pret/pokeheartgold.git
synced 2026-05-23 04:36:22 -05:00
Decompile field/overlay_01_021E66E4.c
This commit is contained in:
parent
f8ebf1b9d6
commit
984fc8caa6
|
|
@ -117,9 +117,9 @@
|
|||
.public ov01_021E631C
|
||||
.public ov01_021E6340
|
||||
.public ov01_021E636C
|
||||
.public ov01_021E66E4
|
||||
.public ov01_021E6734
|
||||
.public ov01_021E6768
|
||||
.public Field3dObjectTaskManager_Create
|
||||
.public Field3dObjectTaskManager_Delete
|
||||
.public Field3dObjectTaskManager_RunDrawTasks
|
||||
.public ov01_021E7F00
|
||||
.public ov01_021E87E4
|
||||
.public ov01_021E8A28
|
||||
|
|
|
|||
|
|
@ -11,9 +11,9 @@
|
|||
.public GF_AssertFail
|
||||
.public sub_0203DF8C
|
||||
.public MIi_CpuClear32
|
||||
.public ov01_021E66E4
|
||||
.public ov01_021E6734
|
||||
.public ov01_021E6768
|
||||
.public ov01_021E67BC
|
||||
.public ov01_021E683C
|
||||
.public ov01_021E687C
|
||||
.public Field3dObjectTaskManager_Create
|
||||
.public Field3dObjectTaskManager_Delete
|
||||
.public Field3dObjectTaskManager_RunDrawTasks
|
||||
.public Field3dObjectTaskManager_CreateTask
|
||||
.public Field3dObjectTask_Delete
|
||||
.public Field3dObjectTask_GetData
|
||||
|
|
|
|||
|
|
@ -21,9 +21,9 @@
|
|||
.public G2x_SetBlendAlpha_
|
||||
.public memset
|
||||
.public _s32_div_f
|
||||
.public ov01_021E67BC
|
||||
.public ov01_021E683C
|
||||
.public ov01_021E687C
|
||||
.public Field3dObjectTaskManager_CreateTask
|
||||
.public Field3dObjectTask_Delete
|
||||
.public Field3dObjectTask_GetData
|
||||
.public ov01_021EB31C
|
||||
.public GetHoneySweetScentWorkSize
|
||||
.public Task_HoneyOrSweetScent
|
||||
|
|
|
|||
|
|
@ -378,9 +378,9 @@
|
|||
.public gGameVersion
|
||||
.public FX_SinCosTable_
|
||||
.public gSystem
|
||||
.public ov01_021E67BC
|
||||
.public ov01_021E683C
|
||||
.public ov01_021E687C
|
||||
.public Field3dObjectTaskManager_CreateTask
|
||||
.public Field3dObjectTask_Delete
|
||||
.public Field3dObjectTask_GetData
|
||||
.public ov01_021E8970
|
||||
.public ov01_021E8A8C
|
||||
.public ov01_021E8B04
|
||||
|
|
@ -510,7 +510,7 @@
|
|||
.public ov02_022507B4
|
||||
.public ov02_022508B4
|
||||
.public ov02_02250A60
|
||||
.public ov02_02250AC8
|
||||
.public LegendCutscene_EndKimonoDance
|
||||
.public ov02_02250AE8
|
||||
.public ov02_02250AFC
|
||||
.public ov02_02250B30
|
||||
|
|
|
|||
|
|
@ -158,7 +158,7 @@ _021E5A12:
|
|||
add r0, r4, #0
|
||||
mov r1, #4
|
||||
mov r2, #8
|
||||
bl ov01_021E66E4
|
||||
bl Field3dObjectTaskManager_Create
|
||||
ldr r1, [r4, #4]
|
||||
str r0, [r1, #4]
|
||||
ldr r1, _021E5BCC ; =0x00000D69
|
||||
|
|
@ -583,7 +583,7 @@ _021E5E12:
|
|||
bl GF3dRender_DeleteSimpleManager
|
||||
ldr r0, [r4, #4]
|
||||
ldr r0, [r0, #4]
|
||||
bl ov01_021E6734
|
||||
bl Field3dObjectTaskManager_Delete
|
||||
mov r0, #0
|
||||
add r1, r0, #0
|
||||
bl Main_SetVBlankIntrCB
|
||||
|
|
@ -1166,7 +1166,7 @@ _021E6294:
|
|||
bl NNS_G3dGlbFlushP
|
||||
ldr r0, [r4, #4]
|
||||
ldr r0, [r0, #4]
|
||||
bl ov01_021E6768
|
||||
bl Field3dObjectTaskManager_RunDrawTasks
|
||||
ldr r1, _021E6318 ; =gG3dDepthBufferingMode
|
||||
add r0, r5, #0
|
||||
ldr r1, [r1]
|
||||
|
|
|
|||
|
|
@ -1,243 +0,0 @@
|
|||
#include "constants/sndseq.h"
|
||||
#include "constants/moves.h"
|
||||
#include "constants/std_script.h"
|
||||
#include "constants/species.h"
|
||||
#include "constants/sprites.h"
|
||||
#include "constants/maps.h"
|
||||
#include "constants/mmodel.h"
|
||||
#include "constants/items.h"
|
||||
#include "msgdata/msg/msg_0096_D31R0201.h"
|
||||
#include "msgdata/msg/msg_0066_D23R0102.h"
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_01_021E66E4.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start ov01_021E66E4
|
||||
ov01_021E66E4: ; 0x021E66E4
|
||||
push {r3, r4, r5, r6, r7, lr}
|
||||
add r5, r1, #0
|
||||
add r7, r0, #0
|
||||
add r0, r5, #0
|
||||
mov r1, #0x14
|
||||
add r6, r2, #0
|
||||
bl AllocFromHeap
|
||||
add r4, r0, #0
|
||||
str r7, [r4]
|
||||
str r5, [r4, #4]
|
||||
mov r0, #0x14
|
||||
add r7, r6, #0
|
||||
mul r7, r0
|
||||
str r6, [r4, #8]
|
||||
add r0, r5, #0
|
||||
add r1, r7, #0
|
||||
bl AllocFromHeap
|
||||
str r0, [r4, #0xc]
|
||||
ldr r1, [r4, #0xc]
|
||||
mov r0, #0
|
||||
add r2, r7, #0
|
||||
bl MIi_CpuClear32
|
||||
add r0, r6, #0
|
||||
bl SysTaskQueue_GetArenaSize
|
||||
add r1, r0, #0
|
||||
add r0, r5, #0
|
||||
bl AllocFromHeap
|
||||
str r0, [r4, #0x10]
|
||||
ldr r1, [r4, #0x10]
|
||||
add r0, r6, #0
|
||||
bl SysTaskQueue_PlacementNew
|
||||
str r0, [r4, #0x10]
|
||||
add r0, r4, #0
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
thumb_func_end ov01_021E66E4
|
||||
|
||||
thumb_func_start ov01_021E6734
|
||||
ov01_021E6734: ; 0x021E6734
|
||||
push {r4, r5, r6, lr}
|
||||
add r5, r0, #0
|
||||
ldr r0, [r5, #8]
|
||||
mov r6, #0
|
||||
cmp r0, #0
|
||||
ble _021E6754
|
||||
add r4, r6, #0
|
||||
_021E6742:
|
||||
ldr r0, [r5, #0xc]
|
||||
add r0, r0, r4
|
||||
bl ov01_021E683C
|
||||
ldr r0, [r5, #8]
|
||||
add r6, r6, #1
|
||||
add r4, #0x14
|
||||
cmp r6, r0
|
||||
blt _021E6742
|
||||
_021E6754:
|
||||
ldr r0, [r5, #0xc]
|
||||
bl FreeToHeap
|
||||
ldr r0, [r5, #0x10]
|
||||
bl FreeToHeap
|
||||
add r0, r5, #0
|
||||
bl FreeToHeap
|
||||
pop {r4, r5, r6, pc}
|
||||
thumb_func_end ov01_021E6734
|
||||
|
||||
thumb_func_start ov01_021E6768
|
||||
ov01_021E6768: ; 0x021E6768
|
||||
ldr r3, _021E6770 ; =SysTaskQueue_RunTasks
|
||||
ldr r0, [r0, #0x10]
|
||||
bx r3
|
||||
nop
|
||||
_021E6770: .word SysTaskQueue_RunTasks
|
||||
thumb_func_end ov01_021E6768
|
||||
|
||||
thumb_func_start ov01_021E6774
|
||||
ov01_021E6774: ; 0x021E6774
|
||||
push {r4, lr}
|
||||
add r4, r1, #0
|
||||
ldr r0, [r4]
|
||||
ldr r0, [r0]
|
||||
bl sub_0203DF8C
|
||||
cmp r0, #0
|
||||
beq _021E6796
|
||||
ldr r0, [r4, #0xc]
|
||||
ldr r3, [r0, #0x10]
|
||||
cmp r3, #0
|
||||
beq _021E6796
|
||||
ldr r1, [r4]
|
||||
ldr r2, [r4, #0x10]
|
||||
ldr r1, [r1]
|
||||
add r0, r4, #0
|
||||
blx r3
|
||||
_021E6796:
|
||||
pop {r4, pc}
|
||||
thumb_func_end ov01_021E6774
|
||||
|
||||
thumb_func_start ov01_021E6798
|
||||
ov01_021E6798: ; 0x021E6798
|
||||
push {r4, lr}
|
||||
add r4, r1, #0
|
||||
ldr r0, [r4]
|
||||
ldr r0, [r0]
|
||||
bl sub_0203DF8C
|
||||
cmp r0, #0
|
||||
beq _021E67BA
|
||||
ldr r0, [r4, #0xc]
|
||||
ldr r3, [r0, #0x14]
|
||||
cmp r3, #0
|
||||
beq _021E67BA
|
||||
ldr r1, [r4]
|
||||
ldr r2, [r4, #0x10]
|
||||
ldr r1, [r1]
|
||||
add r0, r4, #0
|
||||
blx r3
|
||||
_021E67BA:
|
||||
pop {r4, pc}
|
||||
thumb_func_end ov01_021E6798
|
||||
|
||||
thumb_func_start ov01_021E67BC
|
||||
ov01_021E67BC: ; 0x021E67BC
|
||||
push {r4, r5, r6, lr}
|
||||
add r5, r0, #0
|
||||
ldr r2, [r5, #8]
|
||||
add r6, r1, #0
|
||||
mov r1, #0
|
||||
ldr r4, [r5, #0xc]
|
||||
cmp r2, #0
|
||||
ble _021E682C
|
||||
_021E67CC:
|
||||
ldr r0, [r4, #4]
|
||||
cmp r0, #0
|
||||
bne _021E6824
|
||||
ldr r0, _021E6834 ; =ov01_021E6774
|
||||
ldr r2, [r6]
|
||||
add r1, r4, #0
|
||||
bl SysTask_CreateOnMainQueue
|
||||
str r0, [r4, #4]
|
||||
ldr r0, [r5, #0x10]
|
||||
ldr r1, _021E6838 ; =ov01_021E6798
|
||||
ldr r3, [r6]
|
||||
add r2, r4, #0
|
||||
bl SysTaskQueue_InsertTask
|
||||
str r0, [r4, #8]
|
||||
str r5, [r4]
|
||||
str r6, [r4, #0xc]
|
||||
ldr r0, [r4, #4]
|
||||
cmp r0, #0
|
||||
bne _021E67FA
|
||||
bl GF_AssertFail
|
||||
_021E67FA:
|
||||
ldr r0, [r4, #8]
|
||||
cmp r0, #0
|
||||
bne _021E6804
|
||||
bl GF_AssertFail
|
||||
_021E6804:
|
||||
ldrh r1, [r6, #4]
|
||||
cmp r1, #0
|
||||
beq _021E6812
|
||||
ldr r0, [r5, #4]
|
||||
bl AllocFromHeap
|
||||
str r0, [r4, #0x10]
|
||||
_021E6812:
|
||||
ldr r3, [r6, #8]
|
||||
cmp r3, #0
|
||||
beq _021E6820
|
||||
ldr r1, [r5]
|
||||
ldr r2, [r4, #0x10]
|
||||
add r0, r4, #0
|
||||
blx r3
|
||||
_021E6820:
|
||||
add r0, r4, #0
|
||||
pop {r4, r5, r6, pc}
|
||||
_021E6824:
|
||||
add r1, r1, #1
|
||||
add r4, #0x14
|
||||
cmp r1, r2
|
||||
blt _021E67CC
|
||||
_021E682C:
|
||||
bl GF_AssertFail
|
||||
mov r0, #0
|
||||
pop {r4, r5, r6, pc}
|
||||
.balign 4, 0
|
||||
_021E6834: .word ov01_021E6774
|
||||
_021E6838: .word ov01_021E6798
|
||||
thumb_func_end ov01_021E67BC
|
||||
|
||||
thumb_func_start ov01_021E683C
|
||||
ov01_021E683C: ; 0x021E683C
|
||||
push {r4, lr}
|
||||
add r4, r0, #0
|
||||
ldr r1, [r4, #4]
|
||||
cmp r1, #0
|
||||
beq _021E687A
|
||||
ldr r1, [r4, #0xc]
|
||||
ldr r3, [r1, #0xc]
|
||||
cmp r3, #0
|
||||
beq _021E6856
|
||||
ldr r1, [r4]
|
||||
ldr r2, [r4, #0x10]
|
||||
ldr r1, [r1]
|
||||
blx r3
|
||||
_021E6856:
|
||||
ldr r0, [r4, #0xc]
|
||||
ldrh r0, [r0, #4]
|
||||
cmp r0, #0
|
||||
beq _021E6864
|
||||
ldr r0, [r4, #0x10]
|
||||
bl FreeToHeap
|
||||
_021E6864:
|
||||
ldr r0, [r4, #4]
|
||||
bl SysTask_Destroy
|
||||
ldr r0, [r4, #8]
|
||||
bl SysTask_Destroy
|
||||
mov r0, #0
|
||||
add r1, r4, #0
|
||||
mov r2, #0x14
|
||||
bl MIi_CpuClear32
|
||||
_021E687A:
|
||||
pop {r4, pc}
|
||||
thumb_func_end ov01_021E683C
|
||||
|
||||
thumb_func_start ov01_021E687C
|
||||
ov01_021E687C: ; 0x021E687C
|
||||
ldr r0, [r0, #0x10]
|
||||
bx lr
|
||||
thumb_func_end ov01_021E687C
|
||||
|
|
@ -118,27 +118,27 @@ ov01_021FC10C: ; 0x021FC10C
|
|||
thumb_func_start ov01_021FC110
|
||||
ov01_021FC110: ; 0x021FC110
|
||||
ldr r0, [r0, #4]
|
||||
ldr r3, _021FC11C ; =ov01_021E67BC
|
||||
ldr r3, _021FC11C ; =Field3dObjectTaskManager_CreateTask
|
||||
ldr r0, [r0, #4]
|
||||
ldr r1, _021FC120 ; =ov01_02208BCC
|
||||
bx r3
|
||||
nop
|
||||
_021FC11C: .word ov01_021E67BC
|
||||
_021FC11C: .word Field3dObjectTaskManager_CreateTask
|
||||
_021FC120: .word ov01_02208BCC
|
||||
thumb_func_end ov01_021FC110
|
||||
|
||||
thumb_func_start ov01_021FC124
|
||||
ov01_021FC124: ; 0x021FC124
|
||||
ldr r3, _021FC128 ; =ov01_021E683C
|
||||
ldr r3, _021FC128 ; =Field3dObjectTask_Delete
|
||||
bx r3
|
||||
.balign 4, 0
|
||||
_021FC128: .word ov01_021E683C
|
||||
_021FC128: .word Field3dObjectTask_Delete
|
||||
thumb_func_end ov01_021FC124
|
||||
|
||||
thumb_func_start ov01_021FC12C
|
||||
ov01_021FC12C: ; 0x021FC12C
|
||||
push {r3, lr}
|
||||
bl ov01_021E687C
|
||||
bl Field3dObjectTask_GetData
|
||||
ldr r0, [r0, #0x14]
|
||||
pop {r3, pc}
|
||||
.balign 4, 0
|
||||
|
|
@ -147,12 +147,12 @@ ov01_021FC12C: ; 0x021FC12C
|
|||
thumb_func_start ov01_021FC138
|
||||
ov01_021FC138: ; 0x021FC138
|
||||
ldr r0, [r0, #4]
|
||||
ldr r3, _021FC144 ; =ov01_021E67BC
|
||||
ldr r3, _021FC144 ; =Field3dObjectTaskManager_CreateTask
|
||||
ldr r0, [r0, #4]
|
||||
ldr r1, _021FC148 ; =ov01_02208BE4
|
||||
bx r3
|
||||
nop
|
||||
_021FC144: .word ov01_021E67BC
|
||||
_021FC144: .word Field3dObjectTaskManager_CreateTask
|
||||
_021FC148: .word ov01_02208BE4
|
||||
thumb_func_end ov01_021FC138
|
||||
|
||||
|
|
|
|||
|
|
@ -15782,39 +15782,39 @@ _0224D2C4: .word ov02_0224D1DC
|
|||
thumb_func_start ov02_0224D2C8
|
||||
ov02_0224D2C8: ; 0x0224D2C8
|
||||
ldr r0, [r0, #4]
|
||||
ldr r3, _0224D2D4 ; =ov01_021E67BC
|
||||
ldr r3, _0224D2D4 ; =Field3dObjectTaskManager_CreateTask
|
||||
ldr r0, [r0, #4]
|
||||
ldr r1, _0224D2D8 ; =ov02_02253974
|
||||
bx r3
|
||||
nop
|
||||
_0224D2D4: .word ov01_021E67BC
|
||||
_0224D2D4: .word Field3dObjectTaskManager_CreateTask
|
||||
_0224D2D8: .word ov02_02253974
|
||||
thumb_func_end ov02_0224D2C8
|
||||
|
||||
thumb_func_start ov02_0224D2DC
|
||||
ov02_0224D2DC: ; 0x0224D2DC
|
||||
ldr r0, [r0, #4]
|
||||
ldr r3, _0224D2E8 ; =ov01_021E67BC
|
||||
ldr r3, _0224D2E8 ; =Field3dObjectTaskManager_CreateTask
|
||||
ldr r0, [r0, #4]
|
||||
ldr r1, _0224D2EC ; =ov02_022539BC
|
||||
bx r3
|
||||
nop
|
||||
_0224D2E8: .word ov01_021E67BC
|
||||
_0224D2E8: .word Field3dObjectTaskManager_CreateTask
|
||||
_0224D2EC: .word ov02_022539BC
|
||||
thumb_func_end ov02_0224D2DC
|
||||
|
||||
thumb_func_start ov02_0224D2F0
|
||||
ov02_0224D2F0: ; 0x0224D2F0
|
||||
ldr r3, _0224D2F4 ; =ov01_021E683C
|
||||
ldr r3, _0224D2F4 ; =Field3dObjectTask_Delete
|
||||
bx r3
|
||||
.balign 4, 0
|
||||
_0224D2F4: .word ov01_021E683C
|
||||
_0224D2F4: .word Field3dObjectTask_Delete
|
||||
thumb_func_end ov02_0224D2F0
|
||||
|
||||
thumb_func_start ov02_0224D2F8
|
||||
ov02_0224D2F8: ; 0x0224D2F8
|
||||
push {r3, lr}
|
||||
bl ov01_021E687C
|
||||
bl Field3dObjectTask_GetData
|
||||
add r0, #0xec
|
||||
ldr r0, [r0]
|
||||
cmp r0, #1
|
||||
|
|
@ -15951,39 +15951,39 @@ _0224D3F0: .word ov02_0224D1DC
|
|||
thumb_func_start ov02_0224D3F4
|
||||
ov02_0224D3F4: ; 0x0224D3F4
|
||||
ldr r0, [r0, #4]
|
||||
ldr r3, _0224D400 ; =ov01_021E67BC
|
||||
ldr r3, _0224D400 ; =Field3dObjectTaskManager_CreateTask
|
||||
ldr r0, [r0, #4]
|
||||
ldr r1, _0224D404 ; =ov02_022538FC
|
||||
bx r3
|
||||
nop
|
||||
_0224D400: .word ov01_021E67BC
|
||||
_0224D400: .word Field3dObjectTaskManager_CreateTask
|
||||
_0224D404: .word ov02_022538FC
|
||||
thumb_func_end ov02_0224D3F4
|
||||
|
||||
thumb_func_start ov02_0224D408
|
||||
ov02_0224D408: ; 0x0224D408
|
||||
ldr r0, [r0, #4]
|
||||
ldr r3, _0224D414 ; =ov01_021E67BC
|
||||
ldr r3, _0224D414 ; =Field3dObjectTaskManager_CreateTask
|
||||
ldr r0, [r0, #4]
|
||||
ldr r1, _0224D418 ; =ov02_0225398C
|
||||
bx r3
|
||||
nop
|
||||
_0224D414: .word ov01_021E67BC
|
||||
_0224D414: .word Field3dObjectTaskManager_CreateTask
|
||||
_0224D418: .word ov02_0225398C
|
||||
thumb_func_end ov02_0224D408
|
||||
|
||||
thumb_func_start ov02_0224D41C
|
||||
ov02_0224D41C: ; 0x0224D41C
|
||||
ldr r3, _0224D420 ; =ov01_021E683C
|
||||
ldr r3, _0224D420 ; =Field3dObjectTask_Delete
|
||||
bx r3
|
||||
.balign 4, 0
|
||||
_0224D420: .word ov01_021E683C
|
||||
_0224D420: .word Field3dObjectTask_Delete
|
||||
thumb_func_end ov02_0224D41C
|
||||
|
||||
thumb_func_start ov02_0224D424
|
||||
ov02_0224D424: ; 0x0224D424
|
||||
push {r3, lr}
|
||||
bl ov01_021E687C
|
||||
bl Field3dObjectTask_GetData
|
||||
add r0, #0xec
|
||||
ldr r0, [r0]
|
||||
cmp r0, #1
|
||||
|
|
@ -16179,21 +16179,21 @@ _0224D586:
|
|||
thumb_func_start ov02_0224D598
|
||||
ov02_0224D598: ; 0x0224D598
|
||||
ldr r0, [r0, #4]
|
||||
ldr r3, _0224D5A4 ; =ov01_021E67BC
|
||||
ldr r3, _0224D5A4 ; =Field3dObjectTaskManager_CreateTask
|
||||
ldr r0, [r0, #4]
|
||||
ldr r1, _0224D5A8 ; =ov02_02253944
|
||||
bx r3
|
||||
nop
|
||||
_0224D5A4: .word ov01_021E67BC
|
||||
_0224D5A4: .word Field3dObjectTaskManager_CreateTask
|
||||
_0224D5A8: .word ov02_02253944
|
||||
thumb_func_end ov02_0224D598
|
||||
|
||||
thumb_func_start ov02_0224D5AC
|
||||
ov02_0224D5AC: ; 0x0224D5AC
|
||||
ldr r3, _0224D5B0 ; =ov01_021E683C
|
||||
ldr r3, _0224D5B0 ; =Field3dObjectTask_Delete
|
||||
bx r3
|
||||
.balign 4, 0
|
||||
_0224D5B0: .word ov01_021E683C
|
||||
_0224D5B0: .word Field3dObjectTask_Delete
|
||||
thumb_func_end ov02_0224D5AC
|
||||
|
||||
thumb_func_start ov02_0224D5B4
|
||||
|
|
@ -16300,21 +16300,21 @@ _0224D678: .word ov02_0224D1DC
|
|||
thumb_func_start ov02_0224D67C
|
||||
ov02_0224D67C: ; 0x0224D67C
|
||||
ldr r0, [r0, #4]
|
||||
ldr r3, _0224D688 ; =ov01_021E67BC
|
||||
ldr r3, _0224D688 ; =Field3dObjectTaskManager_CreateTask
|
||||
ldr r0, [r0, #4]
|
||||
ldr r1, _0224D68C ; =ov02_02253914
|
||||
bx r3
|
||||
nop
|
||||
_0224D688: .word ov01_021E67BC
|
||||
_0224D688: .word Field3dObjectTaskManager_CreateTask
|
||||
_0224D68C: .word ov02_02253914
|
||||
thumb_func_end ov02_0224D67C
|
||||
|
||||
thumb_func_start ov02_0224D690
|
||||
ov02_0224D690: ; 0x0224D690
|
||||
ldr r3, _0224D694 ; =ov01_021E683C
|
||||
ldr r3, _0224D694 ; =Field3dObjectTask_Delete
|
||||
bx r3
|
||||
.balign 4, 0
|
||||
_0224D694: .word ov01_021E683C
|
||||
_0224D694: .word Field3dObjectTask_Delete
|
||||
thumb_func_end ov02_0224D690
|
||||
|
||||
thumb_func_start ov02_0224D698
|
||||
|
|
@ -16737,21 +16737,21 @@ _0224D994:
|
|||
thumb_func_start ov02_0224D9A4
|
||||
ov02_0224D9A4: ; 0x0224D9A4
|
||||
ldr r0, [r0, #4]
|
||||
ldr r3, _0224D9B0 ; =ov01_021E67BC
|
||||
ldr r3, _0224D9B0 ; =Field3dObjectTaskManager_CreateTask
|
||||
ldr r0, [r0, #4]
|
||||
ldr r1, _0224D9B4 ; =ov02_0225395C
|
||||
bx r3
|
||||
nop
|
||||
_0224D9B0: .word ov01_021E67BC
|
||||
_0224D9B0: .word Field3dObjectTaskManager_CreateTask
|
||||
_0224D9B4: .word ov02_0225395C
|
||||
thumb_func_end ov02_0224D9A4
|
||||
|
||||
thumb_func_start ov02_0224D9B8
|
||||
ov02_0224D9B8: ; 0x0224D9B8
|
||||
ldr r3, _0224D9BC ; =ov01_021E683C
|
||||
ldr r3, _0224D9BC ; =Field3dObjectTask_Delete
|
||||
bx r3
|
||||
.balign 4, 0
|
||||
_0224D9BC: .word ov01_021E683C
|
||||
_0224D9BC: .word Field3dObjectTask_Delete
|
||||
thumb_func_end ov02_0224D9B8
|
||||
|
||||
thumb_func_start ov02_0224D9C0
|
||||
|
|
@ -17103,39 +17103,39 @@ _0224DC60: .word ov02_0224D1DC
|
|||
thumb_func_start ov02_0224DC64
|
||||
ov02_0224DC64: ; 0x0224DC64
|
||||
ldr r0, [r0, #4]
|
||||
ldr r3, _0224DC70 ; =ov01_021E67BC
|
||||
ldr r3, _0224DC70 ; =Field3dObjectTaskManager_CreateTask
|
||||
ldr r0, [r0, #4]
|
||||
ldr r1, _0224DC74 ; =ov02_022539A4
|
||||
bx r3
|
||||
nop
|
||||
_0224DC70: .word ov01_021E67BC
|
||||
_0224DC70: .word Field3dObjectTaskManager_CreateTask
|
||||
_0224DC74: .word ov02_022539A4
|
||||
thumb_func_end ov02_0224DC64
|
||||
|
||||
thumb_func_start ov02_0224DC78
|
||||
ov02_0224DC78: ; 0x0224DC78
|
||||
ldr r0, [r0, #4]
|
||||
ldr r3, _0224DC84 ; =ov01_021E67BC
|
||||
ldr r3, _0224DC84 ; =Field3dObjectTaskManager_CreateTask
|
||||
ldr r0, [r0, #4]
|
||||
ldr r1, _0224DC88 ; =ov02_0225392C
|
||||
bx r3
|
||||
nop
|
||||
_0224DC84: .word ov01_021E67BC
|
||||
_0224DC84: .word Field3dObjectTaskManager_CreateTask
|
||||
_0224DC88: .word ov02_0225392C
|
||||
thumb_func_end ov02_0224DC78
|
||||
|
||||
thumb_func_start ov02_0224DC8C
|
||||
ov02_0224DC8C: ; 0x0224DC8C
|
||||
ldr r3, _0224DC90 ; =ov01_021E683C
|
||||
ldr r3, _0224DC90 ; =Field3dObjectTask_Delete
|
||||
bx r3
|
||||
.balign 4, 0
|
||||
_0224DC90: .word ov01_021E683C
|
||||
_0224DC90: .word Field3dObjectTask_Delete
|
||||
thumb_func_end ov02_0224DC8C
|
||||
|
||||
thumb_func_start ov02_0224DC94
|
||||
ov02_0224DC94: ; 0x0224DC94
|
||||
push {r3, lr}
|
||||
bl ov01_021E687C
|
||||
bl Field3dObjectTask_GetData
|
||||
ldr r1, _0224DCAC ; =0x00000113
|
||||
ldrb r0, [r0, r1]
|
||||
cmp r0, #1
|
||||
|
|
@ -17314,33 +17314,33 @@ _0224DDD0:
|
|||
thumb_func_start ov02_0224DDE0
|
||||
ov02_0224DDE0: ; 0x0224DDE0
|
||||
ldr r0, [r0, #4]
|
||||
ldr r3, _0224DDEC ; =ov01_021E67BC
|
||||
ldr r3, _0224DDEC ; =Field3dObjectTaskManager_CreateTask
|
||||
ldr r0, [r0, #4]
|
||||
ldr r1, _0224DDF0 ; =ov02_022539D4
|
||||
bx r3
|
||||
nop
|
||||
_0224DDEC: .word ov01_021E67BC
|
||||
_0224DDEC: .word Field3dObjectTaskManager_CreateTask
|
||||
_0224DDF0: .word ov02_022539D4
|
||||
thumb_func_end ov02_0224DDE0
|
||||
|
||||
thumb_func_start ov02_0224DDF4
|
||||
ov02_0224DDF4: ; 0x0224DDF4
|
||||
ldr r0, [r0, #4]
|
||||
ldr r3, _0224DE00 ; =ov01_021E67BC
|
||||
ldr r3, _0224DE00 ; =Field3dObjectTaskManager_CreateTask
|
||||
ldr r0, [r0, #4]
|
||||
ldr r1, _0224DE04 ; =ov02_022539EC
|
||||
bx r3
|
||||
nop
|
||||
_0224DE00: .word ov01_021E67BC
|
||||
_0224DE00: .word Field3dObjectTaskManager_CreateTask
|
||||
_0224DE04: .word ov02_022539EC
|
||||
thumb_func_end ov02_0224DDF4
|
||||
|
||||
thumb_func_start ov02_0224DE08
|
||||
ov02_0224DE08: ; 0x0224DE08
|
||||
ldr r3, _0224DE0C ; =ov01_021E683C
|
||||
ldr r3, _0224DE0C ; =Field3dObjectTask_Delete
|
||||
bx r3
|
||||
.balign 4, 0
|
||||
_0224DE0C: .word ov01_021E683C
|
||||
_0224DE0C: .word Field3dObjectTask_Delete
|
||||
thumb_func_end ov02_0224DE08
|
||||
|
||||
thumb_func_start ov02_0224DE10
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@
|
|||
#include "global.h"
|
||||
#include "field_system.h"
|
||||
|
||||
void ov02_02250A60(FieldSystem *fieldSystem);
|
||||
void ov02_02250AC8(FieldSystem *fieldSystem);
|
||||
void LegendCutscene_BeginKimonoDance(FieldSystem *fieldSystem);
|
||||
void LegendCutscene_EndKimonoDance(FieldSystem *fieldSystem);
|
||||
void ov02_02250AE8(FieldSystem *fieldSystem);
|
||||
void ov02_02250AFC(FieldSystem *fieldSystem, u8 a1);
|
||||
void ov02_02250B30(FieldSystem *fieldSystem);
|
||||
|
|
|
|||
|
|
@ -6,39 +6,41 @@
|
|||
|
||||
struct FieldSystem;
|
||||
|
||||
typedef struct UnkStruct_Overlay01_021E66E4_subC UnkStruct_Overlay01_021E66E4_subC;
|
||||
typedef struct Field3dObjectTask Field3dObjectTask;
|
||||
|
||||
typedef void (*Ov01_021E66E4_subC_func)(UnkStruct_Overlay01_021E66E4_subC *a0, struct FieldSystem *a1, void *a2);
|
||||
typedef void (*Field3dObjectTaskFunc)(Field3dObjectTask *task, struct FieldSystem *fieldSystem, void *data);
|
||||
|
||||
typedef struct UnkStruct_Overlay01_021E67BC_template {
|
||||
typedef struct Field3dObjectTaskTemplate {
|
||||
int taskPriority;
|
||||
u16 dataSize;
|
||||
Ov01_021E66E4_subC_func initFunc;
|
||||
Ov01_021E66E4_subC_func destroyFunc;
|
||||
Ov01_021E66E4_subC_func buildFunc;
|
||||
Ov01_021E66E4_subC_func renderFunc;
|
||||
} UnkStruct_Overlay01_021E67BC_template;
|
||||
Field3dObjectTaskFunc initFunc;
|
||||
Field3dObjectTaskFunc destroyFunc;
|
||||
Field3dObjectTaskFunc updateFunc;
|
||||
Field3dObjectTaskFunc renderFunc;
|
||||
} Field3dObjectTaskTemplate;
|
||||
|
||||
struct UnkStruct_Overlay01_021E66E4_subC {
|
||||
BOOL inUse;
|
||||
struct Field3dObjectTask {
|
||||
struct Field3dObjectTaskManager *manager;
|
||||
SysTask *mainTask;
|
||||
SysTask *g3dRenderTask;
|
||||
const UnkStruct_Overlay01_021E67BC_template *param;
|
||||
const Field3dObjectTaskTemplate *param;
|
||||
void *data;
|
||||
};
|
||||
|
||||
typedef struct UnkStruct_Overlay01_021E66E4 {
|
||||
typedef struct Field3dObjectTaskManager {
|
||||
struct FieldSystem *fieldSystem;
|
||||
HeapID heapId;
|
||||
int max;
|
||||
UnkStruct_Overlay01_021E66E4_subC *tasks;
|
||||
Field3dObjectTask *tasks;
|
||||
SysTaskQueue *taskQueue;
|
||||
} UnkStruct_Overlay01_021E66E4;
|
||||
} Field3dObjectTaskManager;
|
||||
|
||||
// @red031000: struct keyword is necessary because cannot double-typedef and cannot circular include
|
||||
UnkStruct_Overlay01_021E66E4 *ov01_021E66E4(struct FieldSystem *a0, HeapID heapId, int num);
|
||||
UnkStruct_Overlay01_021E66E4_subC *ov01_021E67BC(UnkStruct_Overlay01_021E66E4 *a0, const UnkStruct_Overlay01_021E67BC_template *a1); // Create
|
||||
void ov01_021E683C(UnkStruct_Overlay01_021E66E4_subC *a0); // Destroy
|
||||
void *ov01_021E687C(UnkStruct_Overlay01_021E66E4_subC *a0); // GetData
|
||||
Field3dObjectTaskManager *Field3dObjectTaskManager_Create(struct FieldSystem *fieldSystem, HeapID heapId, int num);
|
||||
void Field3dObjectTaskManager_Delete(Field3dObjectTaskManager *manager);
|
||||
void Field3dObjectTaskManager_RunDrawTasks(Field3dObjectTaskManager *manager);
|
||||
Field3dObjectTask *Field3dObjectTaskManager_CreateTask(Field3dObjectTaskManager *manager, const Field3dObjectTaskTemplate *template);
|
||||
void Field3dObjectTask_Delete(Field3dObjectTask *task);
|
||||
void *Field3dObjectTask_GetData(Field3dObjectTask *task);
|
||||
|
||||
#endif //POKEHEARTGOLD_FIELD_OVERLAY_01_021E66E4_H
|
||||
|
|
|
|||
|
|
@ -103,7 +103,7 @@ struct FieldSystemUnkSub68 {
|
|||
|
||||
typedef struct FieldSystemUnkSub4 {
|
||||
u32 unk0;
|
||||
UnkStruct_Overlay01_021E66E4 *unk4;
|
||||
Field3dObjectTaskManager *field3dObjectTaskManager;
|
||||
u32 unk8;
|
||||
void *unk_0C; // weather related?
|
||||
u8 unk10[0x4];
|
||||
|
|
|
|||
2
main.lsf
2
main.lsf
|
|
@ -441,7 +441,7 @@ Overlay field
|
|||
{
|
||||
After main
|
||||
Object asm/overlay_01_021E5900.o
|
||||
Object asm/overlay_01_021E66E4.o
|
||||
Object src/field/overlay_01_021E66E4.o
|
||||
Object asm/overlay_01_021E6880.o
|
||||
Object asm/overlay_01_021E7FDC.o
|
||||
Object asm/overlay_01_021E8744.o
|
||||
|
|
|
|||
|
|
@ -12,11 +12,11 @@
|
|||
#include "fielddata/script/scr_seq/event_D17R0110.h"
|
||||
|
||||
typedef struct KimonoDanceCutsceneCamera {
|
||||
UnkStruct_Overlay01_021E66E4 *unk_00;
|
||||
UnkStruct_Overlay01_021E66E4_subC *unk_04;
|
||||
Field3dObjectTaskManager *field3dObjectTaskManager;
|
||||
Field3dObjectTask *draw3dTask;
|
||||
GFCameraTranslationWrapper *translation;
|
||||
VecFx32 unk_0C;
|
||||
VecFx32 unk_18;
|
||||
VecFx32 lookAtTarget;
|
||||
VecFx32 lookAtPos;
|
||||
int gameVersion;
|
||||
} KimonoDanceCutsceneCamera; // size: 0x28
|
||||
|
||||
|
|
@ -31,13 +31,13 @@ typedef struct LugiaArrivesCutsceneCamera {
|
|||
GFCameraTranslationWrapper *translation;
|
||||
} LugiaArrivesCutsceneCamera;
|
||||
|
||||
typedef struct UnkStruct_ov02_02250BB0_sub38C {
|
||||
typedef struct KimonoDanceCutscene3dObjectTaskData_SoulSilver {
|
||||
Field3dModel model;
|
||||
Field3DModelAnimation anims[2];
|
||||
Field3dObject object;
|
||||
} UnkStruct_ov02_02250BB0_sub38C;
|
||||
} KimonoDanceCutscene3dObjectTaskData_SoulSilver;
|
||||
|
||||
typedef struct UnkStruct_ov02_02250BB0_sub43C {
|
||||
typedef struct KimonoDanceCutscene3dObjectTaskData_HeartGold {
|
||||
NNSG2dScreenData *bg2ScrnData[6];
|
||||
NNSG2dScreenData *bg3ScrnData[6];
|
||||
void *bg2ScrnRaw[6];
|
||||
|
|
@ -48,10 +48,10 @@ typedef struct UnkStruct_ov02_02250BB0_sub43C {
|
|||
u8 switchTilemapDelayTimer;
|
||||
BgConfig *bgConfig;
|
||||
int tilemapIndex;
|
||||
} UnkStruct_ov02_02250BB0_sub43C;
|
||||
} KimonoDanceCutscene3dObjectTaskData_HeartGold;
|
||||
|
||||
typedef struct UnkStruct_ov02_02250BB0 {
|
||||
NNSFndAllocator unk_000;
|
||||
typedef struct KimonoDanceCutscene3dObjectTaskData {
|
||||
NNSFndAllocator allocator;
|
||||
u8 state;
|
||||
u8 unk_011;
|
||||
u16 gameVersion;
|
||||
|
|
@ -64,20 +64,20 @@ typedef struct UnkStruct_ov02_02250BB0 {
|
|||
Field3dObject unk_0BC;
|
||||
Field3dObject unk_134;
|
||||
Field3dObject unk_1AC[4];
|
||||
UnkStruct_ov02_02250BB0_sub38C unk_38C;
|
||||
UnkStruct_ov02_02250BB0_sub43C unk_43C;
|
||||
KimonoDanceCutscene3dObjectTaskData_SoulSilver unk_38C;
|
||||
KimonoDanceCutscene3dObjectTaskData_HeartGold unk_43C;
|
||||
SysTask *unk_4A8;
|
||||
u32 unk_4AC;
|
||||
const CameraParam *cameraParam;
|
||||
const VecFx32 *cameraOffset;
|
||||
} UnkStruct_ov02_02250BB0; // size: 0x4B8
|
||||
} KimonoDanceCutscene3dObjectTaskData; // size: 0x4B8
|
||||
|
||||
typedef struct UnkStruct_ov02_02250B80 {
|
||||
NNSFndAllocator unk_00;
|
||||
Field3dModel unk_10;
|
||||
Field3DModelAnimation unk_20[3];
|
||||
Field3dObject unk_5C;
|
||||
int unk_D4;
|
||||
NNSFndAllocator allocator;
|
||||
Field3dModel model;
|
||||
Field3DModelAnimation anims[3];
|
||||
Field3dObject object;
|
||||
int eyeGlimmerDelayTimer;
|
||||
} UnkStruct_ov02_02250B80;
|
||||
|
||||
typedef struct UnkStruct_ov02_022515A4 {
|
||||
|
|
@ -85,26 +85,26 @@ typedef struct UnkStruct_ov02_022515A4 {
|
|||
fx32 unk_04;
|
||||
u16 unk_08;
|
||||
u16 unk_0A;
|
||||
NNSFndAllocator unk_0C;
|
||||
Field3dModel unk_1C;
|
||||
Field3DModelAnimation unk_2C[3];
|
||||
Field3dObject unk_68;
|
||||
NNSFndAllocator allocator;
|
||||
Field3dModel model;
|
||||
Field3DModelAnimation anims[3];
|
||||
Field3dObject object;
|
||||
u16 gameVersion;
|
||||
u16 unk_E2;
|
||||
} UnkStruct_ov02_022515A4;
|
||||
|
||||
static void ov02_02250B44(FieldSystem *fieldSystem);
|
||||
static BOOL ov02_02250B58(TaskManager *taskman);
|
||||
static void ov02_02250BB0(KimonoDanceCutsceneCamera *cam);
|
||||
static void ov02_02250BC4(UnkStruct_Overlay01_021E66E4_subC *a0, FieldSystem *a1, void *a2);
|
||||
static void ov02_02250EC0(UnkStruct_Overlay01_021E66E4_subC *a0, FieldSystem *fieldSystem, void *a2);
|
||||
static void ov02_02250F1C(UnkStruct_Overlay01_021E66E4_subC *a0, struct FieldSystem *a1, void *a2);
|
||||
static void ov02_02250FE0(UnkStruct_Overlay01_021E66E4_subC *a0, struct FieldSystem *a1, void *a2);
|
||||
static void ov02_02251018(UnkStruct_ov02_02250BB0 *a0);
|
||||
static void KimonoDanceCutscene_CreateField3dObjectTask(KimonoDanceCutsceneCamera *cam);
|
||||
static void Field3dObjectTaskInit_KimonoDanceCutscene(Field3dObjectTask *task, FieldSystem *fieldSystem, void *taskData);
|
||||
static void Field3dObjectTaskDestroy_KimonoDanceCutscene(Field3dObjectTask *task, FieldSystem *fieldSystem, void *taskData);
|
||||
static void Field3dObjectTaskUpdate_KimonoDanceCutscene(Field3dObjectTask *task, FieldSystem *fieldSystem, void *taskData);
|
||||
static void Field3dObjectTaskRender_KimonoDanceCutscene(Field3dObjectTask *task, FieldSystem *fieldSystem, void *taskData);
|
||||
static void ov02_02251018(KimonoDanceCutscene3dObjectTaskData *a0);
|
||||
static void modelAnimListSetFrameIndex(Field3DModelAnimation *animation, u32 num, fx32 frame);
|
||||
static BOOL modelAnimListAdvanceNoLoop(Field3DModelAnimation *animation, u32 num);
|
||||
static void modelAnimListAdvanceLooping(Field3DModelAnimation *animation, u32 num);
|
||||
static void ov02_02251164(UnkStruct_ov02_02250BB0 *a0, int a1);
|
||||
static void ov02_02251164(KimonoDanceCutscene3dObjectTaskData *a0, int a1);
|
||||
static void ov02_022511AC(HeapID heapId, FieldSystem *fieldSystem, UnkStruct_ov02_02250B80 *a2);
|
||||
static void ov02_02251280(UnkStruct_ov02_02250B80 *a0);
|
||||
static BOOL ov02_022512AC(TaskManager *taskman);
|
||||
|
|
@ -115,17 +115,17 @@ static void ov02_022518F8(FieldSystem *fieldSystem);
|
|||
static void ov02_022519B0(FieldSystem *fieldSystem);
|
||||
static void ov02_02251BA8(SysTask *task, void *taskData);
|
||||
static void ov02_02251BC4(SysTask *task, void *taskData);
|
||||
static void ov02_02251B4C(UnkStruct_ov02_02250BB0 *unk);
|
||||
static void ov02_02251B70(UnkStruct_ov02_02250BB0 *unk);
|
||||
static void ov02_02251B4C(KimonoDanceCutscene3dObjectTaskData *unk);
|
||||
static void ov02_02251B70(KimonoDanceCutscene3dObjectTaskData *unk);
|
||||
static BOOL ov02_02251E44(TaskManager *taskman);
|
||||
|
||||
static const UnkStruct_Overlay01_021E67BC_template ov02_02253B4C = {
|
||||
static const Field3dObjectTaskTemplate sField3dObjectTaskTemplate_KimonoDanceCutscene = {
|
||||
3,
|
||||
sizeof(UnkStruct_ov02_02250BB0),
|
||||
ov02_02250BC4,
|
||||
ov02_02250EC0,
|
||||
ov02_02250F1C,
|
||||
ov02_02250FE0,
|
||||
sizeof(KimonoDanceCutscene3dObjectTaskData),
|
||||
Field3dObjectTaskInit_KimonoDanceCutscene,
|
||||
Field3dObjectTaskDestroy_KimonoDanceCutscene,
|
||||
Field3dObjectTaskUpdate_KimonoDanceCutscene,
|
||||
Field3dObjectTaskRender_KimonoDanceCutscene,
|
||||
};
|
||||
|
||||
static const CameraParam sCameraParam_HeartGold[] = {
|
||||
|
|
@ -223,7 +223,7 @@ static const u8 sBg2TilemapFileIDs[] = {
|
|||
46,
|
||||
};
|
||||
|
||||
void ov02_02250A60(FieldSystem *fieldSystem) {
|
||||
void LegendCutscene_BeginKimonoDance(FieldSystem *fieldSystem) {
|
||||
KimonoDanceCutsceneCamera *cam;
|
||||
|
||||
fieldSystem->unk4->legendCutsceneCamera = AllocFromHeapAtEnd(HEAP_ID_4, sizeof(KimonoDanceCutsceneCamera));
|
||||
|
|
@ -231,13 +231,13 @@ void ov02_02250A60(FieldSystem *fieldSystem) {
|
|||
|
||||
cam->translation = CreateCameraTranslationWrapper(HEAP_ID_4, fieldSystem->camera);
|
||||
cam->gameVersion = gGameVersion;
|
||||
cam->unk_0C = Camera_GetLookAtCamTarget(fieldSystem->camera);
|
||||
cam->unk_18 = Camera_GetLookAtCamPos(fieldSystem->camera);
|
||||
cam->unk_00 = fieldSystem->unk4->unk4;
|
||||
ov02_02250BB0(cam);
|
||||
cam->lookAtTarget = Camera_GetLookAtCamTarget(fieldSystem->camera);
|
||||
cam->lookAtPos = Camera_GetLookAtCamPos(fieldSystem->camera);
|
||||
cam->field3dObjectTaskManager = fieldSystem->unk4->field3dObjectTaskManager;
|
||||
KimonoDanceCutscene_CreateField3dObjectTask(cam);
|
||||
}
|
||||
|
||||
void ov02_02250AC8(FieldSystem *fieldSystem) {
|
||||
void LegendCutscene_EndKimonoDance(FieldSystem *fieldSystem) {
|
||||
KimonoDanceCutsceneCamera *cam = fieldSystem->unk4->legendCutsceneCamera;
|
||||
DeleteCameraTranslationWrapper(cam->translation);
|
||||
FreeToHeap(fieldSystem->unk4->legendCutsceneCamera);
|
||||
|
|
@ -246,19 +246,19 @@ void ov02_02250AC8(FieldSystem *fieldSystem) {
|
|||
|
||||
void ov02_02250AE8(FieldSystem *fieldSystem) {
|
||||
KimonoDanceCutsceneCamera *cam = fieldSystem->unk4->legendCutsceneCamera;
|
||||
UnkStruct_ov02_02250BB0 *unk = (UnkStruct_ov02_02250BB0 *)ov01_021E687C(cam->unk_04);
|
||||
unk->state = 1;
|
||||
KimonoDanceCutscene3dObjectTaskData *draw3dTaskData = (KimonoDanceCutscene3dObjectTaskData *)Field3dObjectTask_GetData(cam->draw3dTask);
|
||||
draw3dTaskData->state = 1;
|
||||
}
|
||||
|
||||
void ov02_02250AFC(FieldSystem *fieldSystem, u8 a1) {
|
||||
KimonoDanceCutsceneCamera *cam = fieldSystem->unk4->legendCutsceneCamera;
|
||||
UnkStruct_ov02_02250BB0 *unk = (UnkStruct_ov02_02250BB0 *)ov01_021E687C(cam->unk_04);
|
||||
if (unk->state != 3) {
|
||||
KimonoDanceCutscene3dObjectTaskData *draw3dTaskData = (KimonoDanceCutscene3dObjectTaskData *)Field3dObjectTask_GetData(cam->draw3dTask);
|
||||
if (draw3dTaskData->state != 3) {
|
||||
GF_ASSERT(FALSE);
|
||||
TaskManager_Call(fieldSystem->taskman, ov02_02250B58, NULL);
|
||||
return;
|
||||
}
|
||||
unk->unk_011 = a1;
|
||||
draw3dTaskData->unk_011 = a1;
|
||||
ov02_02250B44(fieldSystem);
|
||||
}
|
||||
|
||||
|
|
@ -268,14 +268,14 @@ void ov02_02250B30(FieldSystem *fieldSystem) {
|
|||
|
||||
static void ov02_02250B44(FieldSystem *fieldSystem) {
|
||||
KimonoDanceCutsceneCamera *cam = fieldSystem->unk4->legendCutsceneCamera;
|
||||
UnkStruct_ov02_02250BB0 *unk = (UnkStruct_ov02_02250BB0 *)ov01_021E687C(cam->unk_04);
|
||||
KimonoDanceCutscene3dObjectTaskData *unk = (KimonoDanceCutscene3dObjectTaskData *)Field3dObjectTask_GetData(cam->draw3dTask);
|
||||
unk->state = 4;
|
||||
}
|
||||
|
||||
static BOOL ov02_02250B58(TaskManager *taskman) {
|
||||
FieldSystem *fieldSystem = TaskManager_GetFieldSystem(taskman);
|
||||
KimonoDanceCutsceneCamera *cam = fieldSystem->unk4->legendCutsceneCamera;
|
||||
UnkStruct_ov02_02250BB0 *unk = (UnkStruct_ov02_02250BB0 *)ov01_021E687C(cam->unk_04);
|
||||
KimonoDanceCutscene3dObjectTaskData *unk = (KimonoDanceCutscene3dObjectTaskData *)Field3dObjectTask_GetData(cam->draw3dTask);
|
||||
if (unk->state == 3) {
|
||||
ov02_02250B44(fieldSystem);
|
||||
return TRUE;
|
||||
|
|
@ -286,86 +286,86 @@ static BOOL ov02_02250B58(TaskManager *taskman) {
|
|||
|
||||
void ov02_02250B80(FieldSystem *fieldSystem) {
|
||||
UnkStruct_ov02_02250B80 *unk = AllocFromHeapAtEnd(HEAP_ID_4, sizeof(UnkStruct_ov02_02250B80));
|
||||
unk->unk_D4 = 0;
|
||||
unk->eyeGlimmerDelayTimer = 0;
|
||||
ov02_022511AC(HEAP_ID_4, fieldSystem, unk);
|
||||
TaskManager_Call(fieldSystem->taskman, ov02_022512AC, unk);
|
||||
}
|
||||
|
||||
static void ov02_02250BB0(KimonoDanceCutsceneCamera *cam) {
|
||||
cam->unk_04 = ov01_021E67BC(cam->unk_00, &ov02_02253B4C);
|
||||
static void KimonoDanceCutscene_CreateField3dObjectTask(KimonoDanceCutsceneCamera *cam) {
|
||||
cam->draw3dTask = Field3dObjectTaskManager_CreateTask(cam->field3dObjectTaskManager, &sField3dObjectTaskTemplate_KimonoDanceCutscene);
|
||||
}
|
||||
|
||||
static void ov02_02250BC4(UnkStruct_Overlay01_021E66E4_subC *a0, FieldSystem *fieldSystem, void *a2) {
|
||||
UnkStruct_ov02_02250BB0 *r5 = (UnkStruct_ov02_02250BB0 *)a2;
|
||||
static void Field3dObjectTaskInit_KimonoDanceCutscene(Field3dObjectTask *task, FieldSystem *fieldSystem, void *taskData) {
|
||||
KimonoDanceCutscene3dObjectTaskData *kimonoDanceObjData = (KimonoDanceCutscene3dObjectTaskData *)taskData;
|
||||
KimonoDanceCutsceneCamera *cam = fieldSystem->unk4->legendCutsceneCamera;
|
||||
r5->gameVersion = cam->gameVersion;
|
||||
GF_ExpHeap_FndInitAllocator(&r5->unk_000, HEAP_ID_4, 0x20);
|
||||
Field3dModel_LoadFromFilesystem(&r5->unk_014, NARC_a_1_7_4, 18, HEAP_ID_4);
|
||||
Field3dModel_LoadFromFilesystem(&r5->unk_024, NARC_a_1_7_4, 25, HEAP_ID_4);
|
||||
Field3dModel_LoadFromFilesystem(&r5->unk_034, NARC_a_1_7_4, 32, HEAP_ID_4);
|
||||
Field3dModelAnimation_LoadFromFilesystem(&r5->unk_044[0], &r5->unk_014, NARC_a_1_7_4, 19, HEAP_ID_4, &r5->unk_000);
|
||||
Field3dModelAnimation_LoadFromFilesystem(&r5->unk_044[1], &r5->unk_014, NARC_a_1_7_4, 20, HEAP_ID_4, &r5->unk_000);
|
||||
Field3dModelAnimation_LoadFromFilesystem(&r5->unk_044[2], &r5->unk_014, NARC_a_1_7_4, 21, HEAP_ID_4, &r5->unk_000);
|
||||
Field3dModelAnimation_LoadFromFilesystem(&r5->unk_080[0], &r5->unk_024, NARC_a_1_7_4, 26, HEAP_ID_4, &r5->unk_000);
|
||||
Field3dModelAnimation_LoadFromFilesystem(&r5->unk_080[1], &r5->unk_024, NARC_a_1_7_4, 27, HEAP_ID_4, &r5->unk_000);
|
||||
Field3dModelAnimation_LoadFromFilesystem(&r5->unk_0A8[0], &r5->unk_034, NARC_a_1_7_4, 33, HEAP_ID_4, &r5->unk_000);
|
||||
Field3dObject_InitFromModel(&r5->unk_0BC, &r5->unk_014);
|
||||
Field3dObject_InitFromModel(&r5->unk_134, &r5->unk_024);
|
||||
Field3dObject_AddAnimation(&r5->unk_0BC, &r5->unk_044[0]);
|
||||
Field3dObject_AddAnimation(&r5->unk_0BC, &r5->unk_044[1]);
|
||||
Field3dObject_AddAnimation(&r5->unk_0BC, &r5->unk_044[2]);
|
||||
Field3dObject_AddAnimation(&r5->unk_134, &r5->unk_080[0]);
|
||||
Field3dObject_AddAnimation(&r5->unk_134, &r5->unk_080[1]);
|
||||
Field3dObject_SetActiveFlag(&r5->unk_0BC, FALSE);
|
||||
Field3dObject_SetActiveFlag(&r5->unk_134, FALSE);
|
||||
kimonoDanceObjData->gameVersion = cam->gameVersion;
|
||||
GF_ExpHeap_FndInitAllocator(&kimonoDanceObjData->allocator, HEAP_ID_4, 0x20);
|
||||
Field3dModel_LoadFromFilesystem(&kimonoDanceObjData->unk_014, NARC_a_1_7_4, 18, HEAP_ID_4);
|
||||
Field3dModel_LoadFromFilesystem(&kimonoDanceObjData->unk_024, NARC_a_1_7_4, 25, HEAP_ID_4);
|
||||
Field3dModel_LoadFromFilesystem(&kimonoDanceObjData->unk_034, NARC_a_1_7_4, 32, HEAP_ID_4);
|
||||
Field3dModelAnimation_LoadFromFilesystem(&kimonoDanceObjData->unk_044[0], &kimonoDanceObjData->unk_014, NARC_a_1_7_4, 19, HEAP_ID_4, &kimonoDanceObjData->allocator);
|
||||
Field3dModelAnimation_LoadFromFilesystem(&kimonoDanceObjData->unk_044[1], &kimonoDanceObjData->unk_014, NARC_a_1_7_4, 20, HEAP_ID_4, &kimonoDanceObjData->allocator);
|
||||
Field3dModelAnimation_LoadFromFilesystem(&kimonoDanceObjData->unk_044[2], &kimonoDanceObjData->unk_014, NARC_a_1_7_4, 21, HEAP_ID_4, &kimonoDanceObjData->allocator);
|
||||
Field3dModelAnimation_LoadFromFilesystem(&kimonoDanceObjData->unk_080[0], &kimonoDanceObjData->unk_024, NARC_a_1_7_4, 26, HEAP_ID_4, &kimonoDanceObjData->allocator);
|
||||
Field3dModelAnimation_LoadFromFilesystem(&kimonoDanceObjData->unk_080[1], &kimonoDanceObjData->unk_024, NARC_a_1_7_4, 27, HEAP_ID_4, &kimonoDanceObjData->allocator);
|
||||
Field3dModelAnimation_LoadFromFilesystem(&kimonoDanceObjData->unk_0A8[0], &kimonoDanceObjData->unk_034, NARC_a_1_7_4, 33, HEAP_ID_4, &kimonoDanceObjData->allocator);
|
||||
Field3dObject_InitFromModel(&kimonoDanceObjData->unk_0BC, &kimonoDanceObjData->unk_014);
|
||||
Field3dObject_InitFromModel(&kimonoDanceObjData->unk_134, &kimonoDanceObjData->unk_024);
|
||||
Field3dObject_AddAnimation(&kimonoDanceObjData->unk_0BC, &kimonoDanceObjData->unk_044[0]);
|
||||
Field3dObject_AddAnimation(&kimonoDanceObjData->unk_0BC, &kimonoDanceObjData->unk_044[1]);
|
||||
Field3dObject_AddAnimation(&kimonoDanceObjData->unk_0BC, &kimonoDanceObjData->unk_044[2]);
|
||||
Field3dObject_AddAnimation(&kimonoDanceObjData->unk_134, &kimonoDanceObjData->unk_080[0]);
|
||||
Field3dObject_AddAnimation(&kimonoDanceObjData->unk_134, &kimonoDanceObjData->unk_080[1]);
|
||||
Field3dObject_SetActiveFlag(&kimonoDanceObjData->unk_0BC, FALSE);
|
||||
Field3dObject_SetActiveFlag(&kimonoDanceObjData->unk_134, FALSE);
|
||||
for (u8 i = 0; i < 4; ++i) {
|
||||
Field3dObject_InitFromModel(&r5->unk_1AC[i], &r5->unk_034);
|
||||
Field3dObject_AddAnimation(&r5->unk_1AC[i], &r5->unk_0A8[0]);
|
||||
Field3dObject_SetActiveFlag(&r5->unk_1AC[i], FALSE);
|
||||
Field3dObject_InitFromModel(&kimonoDanceObjData->unk_1AC[i], &kimonoDanceObjData->unk_034);
|
||||
Field3dObject_AddAnimation(&kimonoDanceObjData->unk_1AC[i], &kimonoDanceObjData->unk_0A8[0]);
|
||||
Field3dObject_SetActiveFlag(&kimonoDanceObjData->unk_1AC[i], FALSE);
|
||||
}
|
||||
modelAnimListSetFrameIndex(r5->unk_044, 3, 0);
|
||||
modelAnimListSetFrameIndex(r5->unk_080, 2, 0);
|
||||
modelAnimListSetFrameIndex(r5->unk_0A8, 1, 0);
|
||||
modelAnimListSetFrameIndex(kimonoDanceObjData->unk_044, 3, 0);
|
||||
modelAnimListSetFrameIndex(kimonoDanceObjData->unk_080, 2, 0);
|
||||
modelAnimListSetFrameIndex(kimonoDanceObjData->unk_0A8, 1, 0);
|
||||
|
||||
VecFx32 pos;
|
||||
MapObject_GetPositionVec(PlayerAvatar_GetMapObject(fieldSystem->playerAvatar), &pos);
|
||||
Field3dObj_SetPosEx(&r5->unk_0BC, pos.x, pos.y, pos.z);
|
||||
Field3dObj_SetPosEx(&r5->unk_134, pos.x, pos.y, pos.z);
|
||||
if (r5->gameVersion == VERSION_SOULSILVER) {
|
||||
Field3dObj_SetPosEx(&r5->unk_1AC[0], pos.x + FX32_CONST(128), pos.y + FX32_CONST(32), pos.z - FX32_CONST(180));
|
||||
Field3dObj_SetPosEx(&r5->unk_1AC[1], pos.x - FX32_CONST(128), pos.y + FX32_CONST(32), pos.z - FX32_CONST(180));
|
||||
Field3dObj_SetPosEx(&r5->unk_1AC[2], 0, 0, 0);
|
||||
Field3dObj_SetPosEx(&r5->unk_1AC[3], 0, 0, 0);
|
||||
r5->unk_4AC = 0x131;
|
||||
r5->cameraParam = sCameraParam_SoulSilver;
|
||||
r5->cameraOffset = sCameraOffset_SoulSilver;
|
||||
Field3dObj_SetPosEx(&kimonoDanceObjData->unk_0BC, pos.x, pos.y, pos.z);
|
||||
Field3dObj_SetPosEx(&kimonoDanceObjData->unk_134, pos.x, pos.y, pos.z);
|
||||
if (kimonoDanceObjData->gameVersion == VERSION_SOULSILVER) {
|
||||
Field3dObj_SetPosEx(&kimonoDanceObjData->unk_1AC[0], pos.x + FX32_CONST(128), pos.y + FX32_CONST(32), pos.z - FX32_CONST(180));
|
||||
Field3dObj_SetPosEx(&kimonoDanceObjData->unk_1AC[1], pos.x - FX32_CONST(128), pos.y + FX32_CONST(32), pos.z - FX32_CONST(180));
|
||||
Field3dObj_SetPosEx(&kimonoDanceObjData->unk_1AC[2], 0, 0, 0);
|
||||
Field3dObj_SetPosEx(&kimonoDanceObjData->unk_1AC[3], 0, 0, 0);
|
||||
kimonoDanceObjData->unk_4AC = 0x131;
|
||||
kimonoDanceObjData->cameraParam = sCameraParam_SoulSilver;
|
||||
kimonoDanceObjData->cameraOffset = sCameraOffset_SoulSilver;
|
||||
} else {
|
||||
Field3dObj_SetPosEx(&r5->unk_1AC[0], pos.x + FX32_CONST(200), pos.y - FX32_CONST(73), pos.z + FX32_CONST(144));
|
||||
Field3dObj_SetPosEx(&r5->unk_1AC[1], pos.x - FX32_CONST(198), pos.y - FX32_CONST(73), pos.z + FX32_CONST(144));
|
||||
Field3dObj_SetPosEx(&r5->unk_1AC[2], pos.x + FX32_CONST(200), pos.y - FX32_CONST(73), pos.z - FX32_CONST(270));
|
||||
Field3dObj_SetPosEx(&r5->unk_1AC[3], pos.x - FX32_CONST(198), pos.y - FX32_CONST(73), pos.z - FX32_CONST(270));
|
||||
r5->unk_4AC = 0x130;
|
||||
r5->cameraParam = sCameraParam_HeartGold;
|
||||
r5->cameraOffset = sCameraOffset_HeartGold;
|
||||
Field3dObj_SetPosEx(&kimonoDanceObjData->unk_1AC[0], pos.x + FX32_CONST(200), pos.y - FX32_CONST(73), pos.z + FX32_CONST(144));
|
||||
Field3dObj_SetPosEx(&kimonoDanceObjData->unk_1AC[1], pos.x - FX32_CONST(198), pos.y - FX32_CONST(73), pos.z + FX32_CONST(144));
|
||||
Field3dObj_SetPosEx(&kimonoDanceObjData->unk_1AC[2], pos.x + FX32_CONST(200), pos.y - FX32_CONST(73), pos.z - FX32_CONST(270));
|
||||
Field3dObj_SetPosEx(&kimonoDanceObjData->unk_1AC[3], pos.x - FX32_CONST(198), pos.y - FX32_CONST(73), pos.z - FX32_CONST(270));
|
||||
kimonoDanceObjData->unk_4AC = 0x130;
|
||||
kimonoDanceObjData->cameraParam = sCameraParam_HeartGold;
|
||||
kimonoDanceObjData->cameraOffset = sCameraOffset_HeartGold;
|
||||
}
|
||||
r5->state = 0;
|
||||
kimonoDanceObjData->state = 0;
|
||||
}
|
||||
|
||||
static void ov02_02250EC0(UnkStruct_Overlay01_021E66E4_subC *a0, FieldSystem *fieldSystem, void *a2) {
|
||||
UnkStruct_ov02_02250BB0 *r4 = (UnkStruct_ov02_02250BB0 *)a2;
|
||||
Field3dModelAnimation_Unload(&r4->unk_044[2], &r4->unk_000);
|
||||
Field3dModelAnimation_Unload(&r4->unk_044[1], &r4->unk_000);
|
||||
Field3dModelAnimation_Unload(&r4->unk_044[0], &r4->unk_000);
|
||||
Field3dModelAnimation_Unload(&r4->unk_080[1], &r4->unk_000);
|
||||
Field3dModelAnimation_Unload(&r4->unk_080[0], &r4->unk_000);
|
||||
Field3dModelAnimation_Unload(&r4->unk_0A8[0], &r4->unk_000);
|
||||
static void Field3dObjectTaskDestroy_KimonoDanceCutscene(Field3dObjectTask *a0, FieldSystem *fieldSystem, void *a2) {
|
||||
KimonoDanceCutscene3dObjectTaskData *r4 = (KimonoDanceCutscene3dObjectTaskData *)a2;
|
||||
Field3dModelAnimation_Unload(&r4->unk_044[2], &r4->allocator);
|
||||
Field3dModelAnimation_Unload(&r4->unk_044[1], &r4->allocator);
|
||||
Field3dModelAnimation_Unload(&r4->unk_044[0], &r4->allocator);
|
||||
Field3dModelAnimation_Unload(&r4->unk_080[1], &r4->allocator);
|
||||
Field3dModelAnimation_Unload(&r4->unk_080[0], &r4->allocator);
|
||||
Field3dModelAnimation_Unload(&r4->unk_0A8[0], &r4->allocator);
|
||||
Field3dModel_Unload(&r4->unk_014);
|
||||
Field3dModel_Unload(&r4->unk_024);
|
||||
Field3dModel_Unload(&r4->unk_034);
|
||||
}
|
||||
|
||||
static void ov02_02250F1C(UnkStruct_Overlay01_021E66E4_subC *a0, struct FieldSystem *a1, void *a2) {
|
||||
UnkStruct_ov02_02250BB0 *r4 = (UnkStruct_ov02_02250BB0 *)a2;
|
||||
static void Field3dObjectTaskUpdate_KimonoDanceCutscene(Field3dObjectTask *a0, struct FieldSystem *a1, void *a2) {
|
||||
KimonoDanceCutscene3dObjectTaskData *r4 = (KimonoDanceCutscene3dObjectTaskData *)a2;
|
||||
|
||||
switch (r4->state) {
|
||||
case 0:
|
||||
|
|
@ -402,8 +402,8 @@ static void ov02_02250F1C(UnkStruct_Overlay01_021E66E4_subC *a0, struct FieldSys
|
|||
}
|
||||
}
|
||||
|
||||
static void ov02_02250FE0(UnkStruct_Overlay01_021E66E4_subC *a0, struct FieldSystem *a1, void *a2) {
|
||||
UnkStruct_ov02_02250BB0 *r4 = (UnkStruct_ov02_02250BB0 *)a2;
|
||||
static void Field3dObjectTaskRender_KimonoDanceCutscene(Field3dObjectTask *a0, struct FieldSystem *a1, void *a2) {
|
||||
KimonoDanceCutscene3dObjectTaskData *r4 = (KimonoDanceCutscene3dObjectTaskData *)a2;
|
||||
|
||||
Field3dObj_Draw(&r4->unk_0BC);
|
||||
Field3dObj_Draw(&r4->unk_134);
|
||||
|
|
@ -412,16 +412,16 @@ static void ov02_02250FE0(UnkStruct_Overlay01_021E66E4_subC *a0, struct FieldSys
|
|||
}
|
||||
}
|
||||
|
||||
static void ov02_02251018(UnkStruct_ov02_02250BB0 *a0) {
|
||||
static void ov02_02251018(KimonoDanceCutscene3dObjectTaskData *a0) {
|
||||
Field3dObject_RemoveAnimation(&a0->unk_0BC, &a0->unk_044[0]);
|
||||
Field3dObject_RemoveAnimation(&a0->unk_0BC, &a0->unk_044[1]);
|
||||
Field3dObject_RemoveAnimation(&a0->unk_0BC, &a0->unk_044[2]);
|
||||
Field3dModelAnimation_Unload(&a0->unk_044[2], &a0->unk_000);
|
||||
Field3dModelAnimation_Unload(&a0->unk_044[1], &a0->unk_000);
|
||||
Field3dModelAnimation_Unload(&a0->unk_044[0], &a0->unk_000);
|
||||
Field3dModelAnimation_LoadFromFilesystem(&a0->unk_044[0], &a0->unk_014, NARC_a_1_7_4, 22, HEAP_ID_4, &a0->unk_000);
|
||||
Field3dModelAnimation_LoadFromFilesystem(&a0->unk_044[1], &a0->unk_014, NARC_a_1_7_4, 23, HEAP_ID_4, &a0->unk_000);
|
||||
Field3dModelAnimation_LoadFromFilesystem(&a0->unk_044[2], &a0->unk_014, NARC_a_1_7_4, 24, HEAP_ID_4, &a0->unk_000);
|
||||
Field3dModelAnimation_Unload(&a0->unk_044[2], &a0->allocator);
|
||||
Field3dModelAnimation_Unload(&a0->unk_044[1], &a0->allocator);
|
||||
Field3dModelAnimation_Unload(&a0->unk_044[0], &a0->allocator);
|
||||
Field3dModelAnimation_LoadFromFilesystem(&a0->unk_044[0], &a0->unk_014, NARC_a_1_7_4, 22, HEAP_ID_4, &a0->allocator);
|
||||
Field3dModelAnimation_LoadFromFilesystem(&a0->unk_044[1], &a0->unk_014, NARC_a_1_7_4, 23, HEAP_ID_4, &a0->allocator);
|
||||
Field3dModelAnimation_LoadFromFilesystem(&a0->unk_044[2], &a0->unk_014, NARC_a_1_7_4, 24, HEAP_ID_4, &a0->allocator);
|
||||
Field3dObject_AddAnimation(&a0->unk_0BC, &a0->unk_044[0]);
|
||||
Field3dObject_AddAnimation(&a0->unk_0BC, &a0->unk_044[1]);
|
||||
Field3dObject_AddAnimation(&a0->unk_0BC, &a0->unk_044[2]);
|
||||
|
|
@ -450,7 +450,7 @@ static void modelAnimListAdvanceLooping(Field3DModelAnimation *animation, u32 nu
|
|||
}
|
||||
}
|
||||
|
||||
static void ov02_02251164(UnkStruct_ov02_02250BB0 *a0, int a1) {
|
||||
static void ov02_02251164(KimonoDanceCutscene3dObjectTaskData *a0, int a1) {
|
||||
u32 r5 = a0->gameVersion == VERSION_SOULSILVER ? 2 : 4;
|
||||
Field3dObject_SetActiveFlag(&a0->unk_134, a1);
|
||||
if (!a0->unk_011) {
|
||||
|
|
@ -461,30 +461,30 @@ static void ov02_02251164(UnkStruct_ov02_02250BB0 *a0, int a1) {
|
|||
}
|
||||
|
||||
static void ov02_022511AC(HeapID heapId, FieldSystem *fieldSystem, UnkStruct_ov02_02250B80 *a2) {
|
||||
GF_ExpHeap_FndInitAllocator(&a2->unk_00, heapId, 0x20);
|
||||
Field3dModel_LoadFromFilesystem(&a2->unk_10, NARC_a_1_7_4, 28, heapId);
|
||||
Field3dModelAnimation_LoadFromFilesystem(&a2->unk_20[0], &a2->unk_10, NARC_a_1_7_4, 29, heapId, &a2->unk_00);
|
||||
Field3dModelAnimation_LoadFromFilesystem(&a2->unk_20[1], &a2->unk_10, NARC_a_1_7_4, 30, heapId, &a2->unk_00);
|
||||
Field3dModelAnimation_LoadFromFilesystem(&a2->unk_20[2], &a2->unk_10, NARC_a_1_7_4, 31, heapId, &a2->unk_00);
|
||||
Field3dObject_InitFromModel(&a2->unk_5C, &a2->unk_10);
|
||||
Field3dObject_AddAnimation(&a2->unk_5C, &a2->unk_20[0]);
|
||||
Field3dObject_AddAnimation(&a2->unk_5C, &a2->unk_20[1]);
|
||||
Field3dObject_AddAnimation(&a2->unk_5C, &a2->unk_20[2]);
|
||||
modelAnimListSetFrameIndex(a2->unk_20, 3, 0);
|
||||
GF_ExpHeap_FndInitAllocator(&a2->allocator, heapId, 0x20);
|
||||
Field3dModel_LoadFromFilesystem(&a2->model, NARC_a_1_7_4, 28, heapId);
|
||||
Field3dModelAnimation_LoadFromFilesystem(&a2->anims[0], &a2->model, NARC_a_1_7_4, 29, heapId, &a2->allocator);
|
||||
Field3dModelAnimation_LoadFromFilesystem(&a2->anims[1], &a2->model, NARC_a_1_7_4, 30, heapId, &a2->allocator);
|
||||
Field3dModelAnimation_LoadFromFilesystem(&a2->anims[2], &a2->model, NARC_a_1_7_4, 31, heapId, &a2->allocator);
|
||||
Field3dObject_InitFromModel(&a2->object, &a2->model);
|
||||
Field3dObject_AddAnimation(&a2->object, &a2->anims[0]);
|
||||
Field3dObject_AddAnimation(&a2->object, &a2->anims[1]);
|
||||
Field3dObject_AddAnimation(&a2->object, &a2->anims[2]);
|
||||
modelAnimListSetFrameIndex(a2->anims, 3, 0);
|
||||
|
||||
VecFx32 pos;
|
||||
MapObject_GetPositionVec(PlayerAvatar_GetMapObject(fieldSystem->playerAvatar), &pos);
|
||||
pos.y += FX32_CONST(100);
|
||||
pos.z -= FX32_CONST(350);
|
||||
Field3dObj_SetPosEx(&a2->unk_5C, pos.x, pos.y, pos.z);
|
||||
Field3dObject_SetActiveFlag(&a2->unk_5C, TRUE);
|
||||
Field3dObj_SetPosEx(&a2->object, pos.x, pos.y, pos.z);
|
||||
Field3dObject_SetActiveFlag(&a2->object, TRUE);
|
||||
}
|
||||
|
||||
static void ov02_02251280(UnkStruct_ov02_02250B80 *a0) {
|
||||
Field3dModelAnimation_Unload(&a0->unk_20[2], &a0->unk_00);
|
||||
Field3dModelAnimation_Unload(&a0->unk_20[1], &a0->unk_00);
|
||||
Field3dModelAnimation_Unload(&a0->unk_20[0], &a0->unk_00);
|
||||
Field3dModel_Unload(&a0->unk_10);
|
||||
Field3dModelAnimation_Unload(&a0->anims[2], &a0->allocator);
|
||||
Field3dModelAnimation_Unload(&a0->anims[1], &a0->allocator);
|
||||
Field3dModelAnimation_Unload(&a0->anims[0], &a0->allocator);
|
||||
Field3dModel_Unload(&a0->model);
|
||||
}
|
||||
|
||||
static BOOL ov02_022512AC(TaskManager *taskman) {
|
||||
|
|
@ -493,14 +493,14 @@ static BOOL ov02_022512AC(TaskManager *taskman) {
|
|||
|
||||
switch (*pState) {
|
||||
case 0:
|
||||
++unk->unk_D4;
|
||||
if (unk->unk_D4 == 2) {
|
||||
++unk->eyeGlimmerDelayTimer;
|
||||
if (unk->eyeGlimmerDelayTimer == 2) {
|
||||
PlaySE(SEQ_SE_GS_RUGIA_MENOHIKARI);
|
||||
}
|
||||
if (modelAnimListAdvanceNoLoop(unk->unk_20, 3)) {
|
||||
if (modelAnimListAdvanceNoLoop(unk->anims, 3)) {
|
||||
++(*pState);
|
||||
}
|
||||
Field3dObj_Draw(&unk->unk_5C);
|
||||
Field3dObj_Draw(&unk->object);
|
||||
break;
|
||||
case 1:
|
||||
ov02_02251280(unk);
|
||||
|
|
@ -517,7 +517,7 @@ static BOOL ov02_02251320(TaskManager *taskman) {
|
|||
NNSG3dRenderObj *r7;
|
||||
u8 i;
|
||||
KimonoDanceCutsceneCamera *cam = fieldSystem->unk4->legendCutsceneCamera;
|
||||
UnkStruct_ov02_02250BB0 *r5 = ov01_021E687C(cam->unk_04);
|
||||
KimonoDanceCutscene3dObjectTaskData *r5 = Field3dObjectTask_GetData(cam->draw3dTask);
|
||||
|
||||
switch (*pState) {
|
||||
case 0:
|
||||
|
|
@ -553,12 +553,12 @@ static BOOL ov02_02251320(TaskManager *taskman) {
|
|||
|
||||
void ov02_02251424(FieldSystem *fieldSystem, u8 a1) {
|
||||
KimonoDanceCutsceneCamera *cam = fieldSystem->unk4->legendCutsceneCamera;
|
||||
UnkStruct_ov02_02250BB0 *r4 = (UnkStruct_ov02_02250BB0 *)ov01_021E687C(cam->unk_04);
|
||||
KimonoDanceCutscene3dObjectTaskData *r4 = (KimonoDanceCutscene3dObjectTaskData *)Field3dObjectTask_GetData(cam->draw3dTask);
|
||||
|
||||
GF_ASSERT(a1 < 3);
|
||||
|
||||
Camera_SetLookAtCamTarget(&cam->unk_0C, fieldSystem->camera);
|
||||
Camera_SetLookAtCamPos(&cam->unk_18, fieldSystem->camera);
|
||||
Camera_SetLookAtCamTarget(&cam->lookAtTarget, fieldSystem->camera);
|
||||
Camera_SetLookAtCamPos(&cam->lookAtPos, fieldSystem->camera);
|
||||
Camera_SetDistance(r4->cameraParam[a1].distance, fieldSystem->camera);
|
||||
Camera_SetAnglePos(&r4->cameraParam[a1].angle, fieldSystem->camera);
|
||||
Camera_SetPerspectiveAngle(r4->cameraParam[a1].perspective, fieldSystem->camera);
|
||||
|
|
@ -573,7 +573,7 @@ void ov02_02251424(FieldSystem *fieldSystem, u8 a1) {
|
|||
void ov02_022514C8(FieldSystem *fieldSystem, u8 a1) {
|
||||
int duration;
|
||||
KimonoDanceCutsceneCamera *cam = fieldSystem->unk4->legendCutsceneCamera;
|
||||
UnkStruct_ov02_02250BB0 *r6 = (UnkStruct_ov02_02250BB0 *)ov01_021E687C(cam->unk_04);
|
||||
KimonoDanceCutscene3dObjectTaskData *r6 = (KimonoDanceCutscene3dObjectTaskData *)Field3dObjectTask_GetData(cam->draw3dTask);
|
||||
|
||||
CameraTranslationPathTemplate template;
|
||||
int whichPoint = a1 == 0 ? 0 : 3;
|
||||
|
|
@ -623,7 +623,7 @@ void ov02_022515A4(FieldSystem *fieldSystem) {
|
|||
|
||||
static BOOL ov02_022515D0(TaskManager *taskman) {
|
||||
int species;
|
||||
int spC;
|
||||
int firstFlapDelay;
|
||||
int flapSfx;
|
||||
int mapObjectId;
|
||||
LocalMapObject *mapObject;
|
||||
|
|
@ -634,12 +634,12 @@ static BOOL ov02_022515D0(TaskManager *taskman) {
|
|||
if (unk->gameVersion == VERSION_SOULSILVER) {
|
||||
species = SPECIES_LUGIA;
|
||||
mapObjectId = obj_D40R0107_lug_obj01;
|
||||
spC = 18;
|
||||
firstFlapDelay = 18;
|
||||
flapSfx = SEQ_SE_GS_RUGIA_HABATAKI;
|
||||
} else {
|
||||
species = SPECIES_HO_OH;
|
||||
mapObjectId = obj_D17R0110_hou_obj01;
|
||||
spC = 0;
|
||||
firstFlapDelay = 0;
|
||||
flapSfx = SEQ_SE_GS_HOUOU_HABATAKI;
|
||||
}
|
||||
|
||||
|
|
@ -648,17 +648,17 @@ static BOOL ov02_022515D0(TaskManager *taskman) {
|
|||
|
||||
switch (*pState) {
|
||||
case 0:
|
||||
GF_ExpHeap_FndInitAllocator(&unk->unk_0C, HEAP_ID_4, 0x20);
|
||||
Field3dModel_LoadFromFilesystem(&unk->unk_1C, NARC_a_1_7_4, 34, HEAP_ID_4);
|
||||
Field3dModelAnimation_LoadFromFilesystem(&unk->unk_2C[0], &unk->unk_1C, NARC_a_1_7_4, 35, HEAP_ID_4, &unk->unk_0C);
|
||||
Field3dModelAnimation_LoadFromFilesystem(&unk->unk_2C[1], &unk->unk_1C, NARC_a_1_7_4, 36, HEAP_ID_4, &unk->unk_0C);
|
||||
Field3dModelAnimation_LoadFromFilesystem(&unk->unk_2C[2], &unk->unk_1C, NARC_a_1_7_4, 37, HEAP_ID_4, &unk->unk_0C);
|
||||
Field3dObject_InitFromModel(&unk->unk_68, &unk->unk_1C);
|
||||
Field3dObject_AddAnimation(&unk->unk_68, &unk->unk_2C[0]);
|
||||
Field3dObject_AddAnimation(&unk->unk_68, &unk->unk_2C[1]);
|
||||
Field3dObject_AddAnimation(&unk->unk_68, &unk->unk_2C[2]);
|
||||
Field3dObject_SetActiveFlag(&unk->unk_68, FALSE);
|
||||
modelAnimListSetFrameIndex(unk->unk_2C,3, 0);
|
||||
GF_ExpHeap_FndInitAllocator(&unk->allocator, HEAP_ID_4, 0x20);
|
||||
Field3dModel_LoadFromFilesystem(&unk->model, NARC_a_1_7_4, 34, HEAP_ID_4);
|
||||
Field3dModelAnimation_LoadFromFilesystem(&unk->anims[0], &unk->model, NARC_a_1_7_4, 35, HEAP_ID_4, &unk->allocator);
|
||||
Field3dModelAnimation_LoadFromFilesystem(&unk->anims[1], &unk->model, NARC_a_1_7_4, 36, HEAP_ID_4, &unk->allocator);
|
||||
Field3dModelAnimation_LoadFromFilesystem(&unk->anims[2], &unk->model, NARC_a_1_7_4, 37, HEAP_ID_4, &unk->allocator);
|
||||
Field3dObject_InitFromModel(&unk->object, &unk->model);
|
||||
Field3dObject_AddAnimation(&unk->object, &unk->anims[0]);
|
||||
Field3dObject_AddAnimation(&unk->object, &unk->anims[1]);
|
||||
Field3dObject_AddAnimation(&unk->object, &unk->anims[2]);
|
||||
Field3dObject_SetActiveFlag(&unk->object, FALSE);
|
||||
modelAnimListSetFrameIndex(unk->anims,3, 0);
|
||||
{
|
||||
VecFx32 sp2C;
|
||||
MapObject_GetPositionVec(PlayerAvatar_GetMapObject(fieldSystem->playerAvatar), &sp2C);
|
||||
|
|
@ -668,7 +668,7 @@ static BOOL ov02_022515D0(TaskManager *taskman) {
|
|||
} else {
|
||||
sp2C.z -= FX32_CONST(280);
|
||||
}
|
||||
Field3dObj_SetPosEx(&unk->unk_68, sp2C.x, sp2C.y, sp2C.z);
|
||||
Field3dObj_SetPosEx(&unk->object, sp2C.x, sp2C.y, sp2C.z);
|
||||
}
|
||||
++(*pState);
|
||||
break;
|
||||
|
|
@ -692,7 +692,7 @@ static BOOL ov02_022515D0(TaskManager *taskman) {
|
|||
break;
|
||||
case 2:
|
||||
++unk->unk_08;
|
||||
if (unk->unk_08 >= spC) {
|
||||
if (unk->unk_08 >= firstFlapDelay) {
|
||||
if (unk->unk_E2 == 0) {
|
||||
PlaySE(flapSfx);
|
||||
unk->unk_E2 = 24;
|
||||
|
|
@ -727,7 +727,7 @@ static BOOL ov02_022515D0(TaskManager *taskman) {
|
|||
case 4:
|
||||
++unk->unk_08;
|
||||
if (unk->unk_08 >= 50) {
|
||||
Field3dObject_SetActiveFlag(&unk->unk_68, TRUE);
|
||||
Field3dObject_SetActiveFlag(&unk->object, TRUE);
|
||||
PlayCry(species, 0);
|
||||
unk->unk_0A = 0;
|
||||
unk->unk_08 = 0;
|
||||
|
|
@ -736,7 +736,7 @@ static BOOL ov02_022515D0(TaskManager *taskman) {
|
|||
break;
|
||||
case 5:
|
||||
{
|
||||
BOOL animDone = modelAnimListAdvanceNoLoop(unk->unk_2C, 3);
|
||||
BOOL animDone = modelAnimListAdvanceNoLoop(unk->anims, 3);
|
||||
++unk->unk_0A;
|
||||
if (animDone && unk->unk_0A >= 65) {
|
||||
sub_0205F328(mapObject, 0);
|
||||
|
|
@ -744,7 +744,7 @@ static BOOL ov02_022515D0(TaskManager *taskman) {
|
|||
++(*pState);
|
||||
}
|
||||
}
|
||||
Field3dObj_Draw(&unk->unk_68);
|
||||
Field3dObj_Draw(&unk->object);
|
||||
break;
|
||||
case 6:
|
||||
++unk->unk_08;
|
||||
|
|
@ -753,10 +753,10 @@ static BOOL ov02_022515D0(TaskManager *taskman) {
|
|||
}
|
||||
break;
|
||||
case 7:
|
||||
Field3dModelAnimation_Unload(&unk->unk_2C[2], &unk->unk_0C);
|
||||
Field3dModelAnimation_Unload(&unk->unk_2C[1], &unk->unk_0C);
|
||||
Field3dModelAnimation_Unload(&unk->unk_2C[0], &unk->unk_0C);
|
||||
Field3dModel_Unload(&unk->unk_1C);
|
||||
Field3dModelAnimation_Unload(&unk->anims[2], &unk->allocator);
|
||||
Field3dModelAnimation_Unload(&unk->anims[1], &unk->allocator);
|
||||
Field3dModelAnimation_Unload(&unk->anims[0], &unk->allocator);
|
||||
Field3dModel_Unload(&unk->model);
|
||||
FreeToHeap(unk);
|
||||
return TRUE;
|
||||
}
|
||||
|
|
@ -775,12 +775,12 @@ void ov02_022518E0(FieldSystem *fieldSystem) {
|
|||
|
||||
static void ov02_022518F8(FieldSystem *fieldSystem) {
|
||||
KimonoDanceCutsceneCamera *cam = fieldSystem->unk4->legendCutsceneCamera;
|
||||
UnkStruct_ov02_02250BB0 *r5 = (UnkStruct_ov02_02250BB0 *)ov01_021E687C(cam->unk_04);
|
||||
UnkStruct_ov02_02250BB0_sub38C *sub_38C = &r5->unk_38C;
|
||||
KimonoDanceCutscene3dObjectTaskData *r5 = (KimonoDanceCutscene3dObjectTaskData *)Field3dObjectTask_GetData(cam->draw3dTask);
|
||||
KimonoDanceCutscene3dObjectTaskData_SoulSilver *sub_38C = &r5->unk_38C;
|
||||
|
||||
Field3dModel_LoadFromFilesystem(&sub_38C->model, NARC_a_1_7_4, 38, HEAP_ID_4);
|
||||
Field3dModelAnimation_LoadFromFilesystem(&sub_38C->anims[0], &sub_38C->model, NARC_a_1_7_4, 39, HEAP_ID_4, &r5->unk_000);
|
||||
Field3dModelAnimation_LoadFromFilesystem(&sub_38C->anims[1], &sub_38C->model, NARC_a_1_7_4, 40, HEAP_ID_4, &r5->unk_000);
|
||||
Field3dModelAnimation_LoadFromFilesystem(&sub_38C->anims[0], &sub_38C->model, NARC_a_1_7_4, 39, HEAP_ID_4, &r5->allocator);
|
||||
Field3dModelAnimation_LoadFromFilesystem(&sub_38C->anims[1], &sub_38C->model, NARC_a_1_7_4, 40, HEAP_ID_4, &r5->allocator);
|
||||
Field3dObject_InitFromModel(&sub_38C->object, &sub_38C->model);
|
||||
Field3dObject_AddAnimation(&sub_38C->object, &sub_38C->anims[0]);
|
||||
Field3dObject_AddAnimation(&sub_38C->object, &sub_38C->anims[1]);
|
||||
|
|
@ -795,8 +795,8 @@ static void ov02_022518F8(FieldSystem *fieldSystem) {
|
|||
|
||||
static void ov02_022519B0(FieldSystem *fieldSystem) {
|
||||
KimonoDanceCutsceneCamera *cam = fieldSystem->unk4->legendCutsceneCamera;
|
||||
UnkStruct_ov02_02250BB0 *sp10 = (UnkStruct_ov02_02250BB0 *)ov01_021E687C(cam->unk_04);
|
||||
UnkStruct_ov02_02250BB0_sub43C *sub_43C = &sp10->unk_43C;
|
||||
KimonoDanceCutscene3dObjectTaskData *sp10 = (KimonoDanceCutscene3dObjectTaskData *)Field3dObjectTask_GetData(cam->draw3dTask);
|
||||
KimonoDanceCutscene3dObjectTaskData_HeartGold *sub_43C = &sp10->unk_43C;
|
||||
|
||||
sub_43C->bgConfig = fieldSystem->bgConfig;
|
||||
|
||||
|
|
@ -826,7 +826,7 @@ static void ov02_022519B0(FieldSystem *fieldSystem) {
|
|||
|
||||
void ov02_02251B14(FieldSystem *fieldSystem) {
|
||||
KimonoDanceCutsceneCamera *cam = fieldSystem->unk4->legendCutsceneCamera;
|
||||
UnkStruct_ov02_02250BB0 *unk = (UnkStruct_ov02_02250BB0 *)ov01_021E687C(cam->unk_04);
|
||||
KimonoDanceCutscene3dObjectTaskData *unk = (KimonoDanceCutscene3dObjectTaskData *)Field3dObjectTask_GetData(cam->draw3dTask);
|
||||
SysTask_Destroy(unk->unk_4A8);
|
||||
unk->unk_4A8 = NULL;
|
||||
if (cam->gameVersion == VERSION_SOULSILVER) {
|
||||
|
|
@ -836,15 +836,15 @@ void ov02_02251B14(FieldSystem *fieldSystem) {
|
|||
}
|
||||
}
|
||||
|
||||
static void ov02_02251B4C(UnkStruct_ov02_02250BB0 *unk) {
|
||||
UnkStruct_ov02_02250BB0_sub38C *sub_38C = &unk->unk_38C;
|
||||
Field3dModelAnimation_Unload(&sub_38C->anims[1], &unk->unk_000);
|
||||
Field3dModelAnimation_Unload(&sub_38C->anims[0], &unk->unk_000);
|
||||
static void ov02_02251B4C(KimonoDanceCutscene3dObjectTaskData *unk) {
|
||||
KimonoDanceCutscene3dObjectTaskData_SoulSilver *sub_38C = &unk->unk_38C;
|
||||
Field3dModelAnimation_Unload(&sub_38C->anims[1], &unk->allocator);
|
||||
Field3dModelAnimation_Unload(&sub_38C->anims[0], &unk->allocator);
|
||||
Field3dModel_Unload(&sub_38C->model);
|
||||
}
|
||||
|
||||
static void ov02_02251B70(UnkStruct_ov02_02250BB0 *unk) {
|
||||
UnkStruct_ov02_02250BB0_sub43C *sub_43C = &unk->unk_43C;
|
||||
static void ov02_02251B70(KimonoDanceCutscene3dObjectTaskData *unk) {
|
||||
KimonoDanceCutscene3dObjectTaskData_HeartGold *sub_43C = &unk->unk_43C;
|
||||
GfGfx_EngineATogglePlanes(GX_PLANEMASK_BG2, GF_PLANE_TOGGLE_OFF);
|
||||
GfGfx_EngineATogglePlanes(GX_PLANEMASK_BG3, GF_PLANE_TOGGLE_OFF);
|
||||
for (u8 i = 0; i < 6; ++i) {
|
||||
|
|
@ -854,15 +854,15 @@ static void ov02_02251B70(UnkStruct_ov02_02250BB0 *unk) {
|
|||
}
|
||||
|
||||
static void ov02_02251BA8(SysTask *task, void *taskData) {
|
||||
UnkStruct_ov02_02250BB0 *unk = (UnkStruct_ov02_02250BB0 *)taskData;
|
||||
UnkStruct_ov02_02250BB0_sub38C *sub_38C = &unk->unk_38C;
|
||||
KimonoDanceCutscene3dObjectTaskData *unk = (KimonoDanceCutscene3dObjectTaskData *)taskData;
|
||||
KimonoDanceCutscene3dObjectTaskData_SoulSilver *sub_38C = &unk->unk_38C;
|
||||
modelAnimListAdvanceLooping(sub_38C->anims, 2);
|
||||
Field3dObj_Draw(&sub_38C->object);
|
||||
}
|
||||
|
||||
static void ov02_02251BC4(SysTask *task, void *taskData) {
|
||||
UnkStruct_ov02_02250BB0 *unk = (UnkStruct_ov02_02250BB0 *)taskData;
|
||||
UnkStruct_ov02_02250BB0_sub43C *sub_43C = &unk->unk_43C;
|
||||
KimonoDanceCutscene3dObjectTaskData *unk = (KimonoDanceCutscene3dObjectTaskData *)taskData;
|
||||
KimonoDanceCutscene3dObjectTaskData_HeartGold *sub_43C = &unk->unk_43C;
|
||||
|
||||
++sub_43C->switchTilemapDelayTimer;
|
||||
if (sub_43C->switchTilemapDelayTimer >= 6) {
|
||||
|
|
|
|||
92
src/field/overlay_01_021E66E4.c
Normal file
92
src/field/overlay_01_021E66E4.c
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
#include "global.h"
|
||||
#include "field_system.h"
|
||||
#include "field/overlay_01_021E66E4.h"
|
||||
|
||||
static void Task_Field3dObject_Update(SysTask *task, void *taskdata);
|
||||
static void Task_Field3dObject_Render(SysTask *task, void *taskData);
|
||||
|
||||
Field3dObjectTaskManager *Field3dObjectTaskManager_Create(struct FieldSystem *fieldSystem, HeapID heapId, int num) {
|
||||
Field3dObjectTaskManager *ret = AllocFromHeap(heapId, sizeof(Field3dObjectTaskManager));
|
||||
ret->fieldSystem = fieldSystem;
|
||||
ret->heapId = heapId;
|
||||
ret->max = num;
|
||||
ret->tasks = AllocFromHeap(heapId, num * sizeof(Field3dObjectTask));
|
||||
MI_CpuClear32(ret->tasks, num * sizeof(Field3dObjectTask));
|
||||
ret->taskQueue = (SysTaskQueue *)AllocFromHeap(heapId, SysTaskQueue_GetArenaSize(num));
|
||||
ret->taskQueue = SysTaskQueue_PlacementNew(num, ret->taskQueue);
|
||||
return ret;
|
||||
}
|
||||
|
||||
void Field3dObjectTaskManager_Delete(Field3dObjectTaskManager *manager) {
|
||||
for (int i = 0; i < manager->max; ++i) {
|
||||
Field3dObjectTask_Delete(&manager->tasks[i]);
|
||||
}
|
||||
FreeToHeap(manager->tasks);
|
||||
FreeToHeap(manager->taskQueue);
|
||||
FreeToHeap(manager);
|
||||
}
|
||||
|
||||
void Field3dObjectTaskManager_RunDrawTasks(Field3dObjectTaskManager *manager) {
|
||||
SysTaskQueue_RunTasks(manager->taskQueue);
|
||||
}
|
||||
|
||||
static void Task_Field3dObject_Update(SysTask *task, void *taskData) {
|
||||
Field3dObjectTask *objTask = (Field3dObjectTask *)taskData;
|
||||
if (sub_0203DF8C(objTask->manager->fieldSystem)) {
|
||||
if (objTask->param->updateFunc != NULL) {
|
||||
objTask->param->updateFunc(objTask, objTask->manager->fieldSystem, objTask->data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void Task_Field3dObject_Render(SysTask *task, void *taskData) {
|
||||
Field3dObjectTask *objTask = (Field3dObjectTask *)taskData;
|
||||
if (sub_0203DF8C(objTask->manager->fieldSystem)) {
|
||||
if (objTask->param->renderFunc != NULL) {
|
||||
objTask->param->renderFunc(objTask, objTask->manager->fieldSystem, objTask->data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Field3dObjectTask *Field3dObjectTaskManager_CreateTask(Field3dObjectTaskManager *manager, const Field3dObjectTaskTemplate *template) {
|
||||
int i;
|
||||
Field3dObjectTask *ret;
|
||||
for (ret = manager->tasks, i = 0; i < manager->max; ++ret, ++i) {
|
||||
if (ret->mainTask == NULL) {
|
||||
ret->mainTask = SysTask_CreateOnMainQueue(Task_Field3dObject_Update, ret, template->taskPriority);
|
||||
ret->g3dRenderTask = SysTaskQueue_InsertTask(manager->taskQueue, Task_Field3dObject_Render, ret, template->taskPriority);
|
||||
ret->manager = manager;
|
||||
ret->param = template;
|
||||
GF_ASSERT(ret->mainTask != NULL);
|
||||
GF_ASSERT(ret->g3dRenderTask != NULL);
|
||||
if (template->dataSize != 0) {
|
||||
ret->data = AllocFromHeap(manager->heapId, template->dataSize);
|
||||
}
|
||||
if (template->initFunc != NULL) {
|
||||
template->initFunc(ret, manager->fieldSystem, ret->data);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
GF_ASSERT(FALSE);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void Field3dObjectTask_Delete(Field3dObjectTask *task) {
|
||||
if (task->mainTask != NULL) {
|
||||
if (task->param->destroyFunc != NULL) {
|
||||
task->param->destroyFunc(task, task->manager->fieldSystem, task->data);
|
||||
}
|
||||
if (task->param->dataSize != 0) {
|
||||
FreeToHeap(task->data);
|
||||
}
|
||||
SysTask_Destroy(task->mainTask);
|
||||
SysTask_Destroy(task->g3dRenderTask);
|
||||
MI_CpuClear32(task, sizeof(Field3dObjectTask));
|
||||
}
|
||||
}
|
||||
|
||||
void *Field3dObjectTask_GetData(Field3dObjectTask *task) {
|
||||
return task->data;
|
||||
}
|
||||
|
|
@ -5156,12 +5156,12 @@ BOOL ScrCmd_TryHeadbuttEncounter(ScriptContext *ctx) {
|
|||
}
|
||||
|
||||
BOOL ScrCmd_755(ScriptContext *ctx) {
|
||||
ov02_02250A60(ctx->fieldSystem);
|
||||
LegendCutscene_BeginKimonoDance(ctx->fieldSystem);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL ScrCmd_756(ScriptContext *ctx) {
|
||||
ov02_02250AC8(ctx->fieldSystem);
|
||||
LegendCutscene_EndKimonoDance(ctx->fieldSystem);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user