Misc fixes (#2830)

* Replace DANPCF_C_HACK with a better fakematch

* d_a_obj_item OK

* Fix ninja diff

* Misc debug/nonmatching fixes

* Fix ninja diff for PAL

* Fix bad PAL split
This commit is contained in:
LagoLunatic 2025-11-19 17:10:03 -05:00 committed by GitHub
parent 8956be538e
commit 4cf2c7e37d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
35 changed files with 187 additions and 233 deletions

View File

@ -30,14 +30,13 @@
"build/*/baseline.json": true, "build/*/baseline.json": true,
"build/**/*.MAP": true, "build/**/*.MAP": true,
"build/**/*.o": true, "build/**/*.o": true,
"build/**/*.s": true,
"build/**/*.plf": true, "build/**/*.plf": true,
"build/**/*.rel": true, "build/**/*.rel": true,
"orig/**/*.rel": true, "orig/**/*.rel": true,
"build/**/*.lcf": true, "build/**/*.lcf": true,
"build/**/*.preplf": true, "build/**/*.preplf": true,
"build/**/*.d": true, "build/**/*.d": true,
// "build/**/*.s": true, "build/**/*.s": true,
"build/**/*.map": true, "build/**/*.map": true,
"build/**/*.cpp": true, "build/**/*.cpp": true,
"build/**/*.ctx": true, "build/**/*.ctx": true,

View File

@ -463,8 +463,10 @@ mFindCount__10daNpc_Kn_c = .bss:0x00000110; // type:object size:0x4 scope:global
@5904 = .bss:0x00000114; // type:object size:0xC scope:local @5904 = .bss:0x00000114; // type:object size:0xC scope:local
l_HIO = .bss:0x00000120; // type:object size:0x4 scope:global data:4byte l_HIO = .bss:0x00000120; // type:object size:0x4 scope:global data:4byte
@12316 = .bss:0x00000124; // type:object size:0xC scope:local @12316 = .bss:0x00000124; // type:object size:0xC scope:local
init$9794 = .bss:0x00000130; // type:object size:0x1 scope:local align:1
lightAParticleScale$12315 = .bss:0x00000134; // type:object size:0xC scope:local lightAParticleScale$12315 = .bss:0x00000134; // type:object size:0xC scope:local
@12320 = .bss:0x00000140; // type:object size:0xC scope:local @12320 = .bss:0x00000140; // type:object size:0xC scope:local
init$9798 = .bss:0x0000014C; // type:object size:0x1 scope:local align:1
lightALocalTrans$12319 = .bss:0x00000150; // type:object size:0xC scope:local lightALocalTrans$12319 = .bss:0x00000150; // type:object size:0xC scope:local
sInstance__40JASGlobalInstance<19JASDefaultBankTable> = .bss:0x0000015C; // type:object size:0x4 scope:global sInstance__40JASGlobalInstance<19JASDefaultBankTable> = .bss:0x0000015C; // type:object size:0x4 scope:global
sInstance__35JASGlobalInstance<14JASAudioThread> = .bss:0x00000160; // type:object size:0x4 scope:global sInstance__35JASGlobalInstance<14JASAudioThread> = .bss:0x00000160; // type:object size:0x4 scope:global

View File

@ -111,4 +111,4 @@ __vt__12dBgS_ObjAcch = .data:0x0000021C; // type:object size:0x24 scope:global
__vt__8cM3dGAab = .data:0x00000240; // type:object size:0xC scope:global __vt__8cM3dGAab = .data:0x00000240; // type:object size:0xC scope:global
__vt__8cM3dGSph = .data:0x0000024C; // type:object size:0xC scope:global __vt__8cM3dGSph = .data:0x0000024C; // type:object size:0xC scope:global
__vt__17dEvLib_callback_c = .data:0x00000258; // type:object size:0x18 scope:global __vt__17dEvLib_callback_c = .data:0x00000258; // type:object size:0x18 scope:global
lbl_675_bss_0 = .bss:0x00000000; // type:object size:0x1 data:byte init$1953 = .bss:0x00000000; // type:object size:0x1 scope:local align:1

View File

@ -21705,18 +21705,8 @@ aram_cache_size = .sbss:0x80450C68; // type:object size:0x4 scope:global align:4
mSystemFar__14mDoLib_clipper = .sbss:0x80450C70; // type:object size:0x4 scope:global align:4 data:float mSystemFar__14mDoLib_clipper = .sbss:0x80450C70; // type:object size:0x4 scope:global align:4 data:float
mFovyRate__14mDoLib_clipper = .sbss:0x80450C74; // type:object size:0x4 scope:global align:4 data:float mFovyRate__14mDoLib_clipper = .sbss:0x80450C74; // type:object size:0x4 scope:global align:4 data:float
mResetData__6mDoRst = .sbss:0x80450C78; // type:object size:0x4 scope:global align:4 data:4byte mResetData__6mDoRst = .sbss:0x80450C78; // type:object size:0x4 scope:global align:4 data:4byte
struct_80450C7C = .sbss:0x80450C7C; // type:object size:0x1 scope:global align:1
struct_80450C7D = .sbss:0x80450C7D; // type:object size:0x1 scope:global align:1
struct_80450C7E = .sbss:0x80450C7E; // type:object size:0x1 scope:global align:1
struct_80450C7F = .sbss:0x80450C7F; // type:object size:0x1 scope:global align:1
SyncWidthSound__9mDoDvdThd = .sbss:0x80450C80; // type:object size:0x1 scope:global align:1 data:byte SyncWidthSound__9mDoDvdThd = .sbss:0x80450C80; // type:object size:0x1 scope:global align:1 data:byte
sDefaultDirection = .sbss:0x80450C81; // type:object size:0x1 scope:global align:1 data:byte sDefaultDirection = .sbss:0x80450C81; // type:object size:0x1 scope:global align:1 data:byte
struct_80450C82 = .sbss:0x80450C82; // type:object size:0x1 scope:global align:1
struct_80450C83 = .sbss:0x80450C83; // type:object size:0x1 scope:global align:1
struct_80450C84 = .sbss:0x80450C84; // type:object size:0x1 scope:global align:1
struct_80450C85 = .sbss:0x80450C85; // type:object size:0x1 scope:global align:1
struct_80450C86 = .sbss:0x80450C86; // type:object size:0x1 scope:global align:1
struct_80450C87 = .sbss:0x80450C87; // type:object size:0x1 scope:global align:1
mDoDvdErr_initialized = .sbss:0x80450C88; // type:object size:0x1 scope:global align:1 data:byte mDoDvdErr_initialized = .sbss:0x80450C88; // type:object size:0x1 scope:global align:1 data:byte
sConsole = .sbss:0x80450C90; // type:object size:0x4 scope:local align:4 data:4byte sConsole = .sbss:0x80450C90; // type:object size:0x4 scope:local align:4 data:4byte
cDmr_SkipInfo = .sbss:0x80450C98; // type:object size:0x1 scope:global align:1 cDmr_SkipInfo = .sbss:0x80450C98; // type:object size:0x1 scope:global align:1

View File

@ -114,7 +114,7 @@ __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:globa
@1012 = .bss:0x0000003C; // type:object size:0x1 scope:local @1012 = .bss:0x0000003C; // type:object size:0x1 scope:local
@1010 = .bss:0x00000040; // type:object size:0x1 scope:local @1010 = .bss:0x00000040; // type:object size:0x1 scope:local
@1009 = .bss:0x00000044; // type:object size:0x1 scope:local @1009 = .bss:0x00000044; // type:object size:0x1 scope:local
l_HIOInit = .bss:0x00000045; // type:object size:0x1 data:byte scope:local l_HIOInit = .bss:0x00000045; // type:object size:0x1 scope:local data:byte
@3657 = .bss:0x00000048; // type:object size:0xC scope:local @3657 = .bss:0x00000048; // type:object size:0xC scope:local
l_HIO = .bss:0x00000054; // type:object size:0x24 scope:global data:byte l_HIO = .bss:0x00000054; // type:object size:0x24 scope:global data:byte
mFireTimer = .bss:0x00000078; // type:object size:0x4 scope:global data:4byte mFireTimer = .bss:0x00000078; // type:object size:0x4 scope:global data:4byte

View File

@ -788,7 +788,7 @@ d/actor/d_a_npc_cd2.cpp:
.rodata start:0x80394A50 end:0x80395588 .rodata start:0x80394A50 end:0x80395588
.data start:0x803B7EA0 end:0x803BBA80 .data start:0x803B7EA0 end:0x803BBA80
.bss start:0x8042A5B0 end:0x8042E898 .bss start:0x8042A5B0 end:0x8042E898
.sbss start:0x80452FC0 end:0x80452FD8 .sbss start:0x80452FC0 end:0x80452FD0
.sdata2 start:0x804554A0 end:0x80455510 .sdata2 start:0x804554A0 end:0x80455510
d/actor/d_a_obj_item.cpp: d/actor/d_a_obj_item.cpp:
@ -797,6 +797,7 @@ d/actor/d_a_obj_item.cpp:
.rodata start:0x80395588 end:0x80395598 .rodata start:0x80395588 end:0x80395598
.data start:0x803BBA80 end:0x803BBD58 .data start:0x803BBA80 end:0x803BBD58
.sdata start:0x80452668 end:0x80452670 .sdata start:0x80452668 end:0x80452670
.sbss start:0x80452FD0 end:0x80452FD8
.sdata2 start:0x80455510 end:0x804555A0 .sdata2 start:0x80455510 end:0x804555A0
d/d_insect.cpp: d/d_insect.cpp:

View File

@ -17486,7 +17486,7 @@ j2dDefaultIndTevStageInfo = .rodata:0x803A38D4; // type:object size:0xC scope:gl
@1849 = .rodata:0x803A3900; // type:object size:0x10 scope:local align:4 data:4byte @1849 = .rodata:0x803A3900; // type:object size:0x10 scope:local align:4 data:4byte
@3028 = .rodata:0x803A3910; // type:object size:0x10 scope:local align:4 data:4byte @3028 = .rodata:0x803A3910; // type:object size:0x10 scope:local align:4 data:4byte
@3037 = .rodata:0x803A3920; // type:object size:0x14 scope:local align:4 data:4byte @3037 = .rodata:0x803A3920; // type:object size:0x14 scope:local align:4 data:4byte
@stringBase0 = .rodata:0x803A3938; // type:object size:0x4 scope:local align:4 data:string_table @stringBase0 = .rodata:0x803A3938; // type:object size:0x3 scope:local align:4 data:string_table
...rodata.0 = .rodata:0x803A3940; // type:label scope:local align:4 ...rodata.0 = .rodata:0x803A3940; // type:label scope:local align:4
@1508 = .rodata:0x803A3940; // type:object size:0x10 scope:local align:4 data:4byte @1508 = .rodata:0x803A3940; // type:object size:0x10 scope:local align:4 data:4byte
@1557 = .rodata:0x803A3950; // type:object size:0x10 scope:local align:4 @1557 = .rodata:0x803A3950; // type:object size:0x10 scope:local align:4
@ -21954,7 +21954,7 @@ lbl_80452FC0 = .sbss:0x80452FC0; // type:object size:0x1 data:byte
target = .sbss:0x80452FC4; // type:object size:0x4 scope:global align:4 data:4byte target = .sbss:0x80452FC4; // type:object size:0x4 scope:global align:4 data:4byte
targetWay = .sbss:0x80452FC8; // type:object size:0x4 scope:global align:4 data:float targetWay = .sbss:0x80452FC8; // type:object size:0x4 scope:global align:4 data:float
wolfAngle = .sbss:0x80452FCC; // type:object size:0x2 scope:global align:4 data:2byte wolfAngle = .sbss:0x80452FCC; // type:object size:0x2 scope:global align:4 data:2byte
lbl_80452FD0 = .sbss:0x80452FD0; // type:object size:0x1 data:byte init$2639 = .sbss:0x80452FD0; // type:object size:0x1 scope:local align:1 data:byte
m_midnaActor__9daPy_py_c = .sbss:0x80452FD8; // type:object size:0x4 scope:global align:4 data:4byte m_midnaActor__9daPy_py_c = .sbss:0x80452FD8; // type:object size:0x4 scope:global align:4 data:4byte
m_dropAngleY__20daPy_boomerangMove_c = .sbss:0x80452FDC; // type:object size:0x2 scope:global align:2 data:2byte m_dropAngleY__20daPy_boomerangMove_c = .sbss:0x80452FDC; // type:object size:0x2 scope:global align:2 data:2byte
m_eventKeepFlg__20daPy_boomerangMove_c = .sbss:0x80452FDE; // type:object size:0x2 scope:global align:2 data:2byte m_eventKeepFlg__20daPy_boomerangMove_c = .sbss:0x80452FDE; // type:object size:0x2 scope:global align:2 data:2byte

View File

@ -582,5 +582,7 @@ mFindActorPtrs__10daNpc_Kn_c = .bss:0x00000098; // type:object size:0xC8 scope:g
mFindCount__10daNpc_Kn_c = .bss:0x00000160; // type:object size:0x4 scope:global mFindCount__10daNpc_Kn_c = .bss:0x00000160; // type:object size:0x4 scope:global
@126080 = .bss:0x00000164; // type:object size:0xC scope:local @126080 = .bss:0x00000164; // type:object size:0xC scope:local
l_HIO = .bss:0x00000170; // type:object size:0xBC scope:global l_HIO = .bss:0x00000170; // type:object size:0xBC scope:global
@GUARD@setSwordChargePtcl__10daNpc_Kn_cFv@lightAParticleScale = .bss:0x0000022C; // type:object size:0x1 scope:local align:1
@LOCAL@setSwordChargePtcl__10daNpc_Kn_cFv@lightAParticleScale = .bss:0x00000230; // type:object size:0xC scope:local @LOCAL@setSwordChargePtcl__10daNpc_Kn_cFv@lightAParticleScale = .bss:0x00000230; // type:object size:0xC scope:local
@GUARD@setSwordChargePtcl__10daNpc_Kn_cFv@lightALocalTrans@0 = .bss:0x0000023C; // type:object size:0x1 scope:local align:1
@LOCAL@setSwordChargePtcl__10daNpc_Kn_cFv@lightALocalTrans@0 = .bss:0x00000240; // type:object size:0xC scope:local @LOCAL@setSwordChargePtcl__10daNpc_Kn_cFv@lightALocalTrans@0 = .bss:0x00000240; // type:object size:0xC scope:local

View File

@ -461,11 +461,6 @@ def MatchingFor(*versions) -> bool:
return config.version in versions return config.version in versions
# For whatever reason, daNpcF_c::daNpcF_c gets inlined.
# Using the following prevents that from happening:
# TODO: This is just a temporary hack and should be looked into more extensively in the future
DANPCF_C_HACK = '-pragma "inline_max_size(494)"'
config.warn_missing_config = True config.warn_missing_config = True
config.warn_missing_source = False config.warn_missing_source = False
config.precompiled_headers = [ config.precompiled_headers = [
@ -680,7 +675,7 @@ config.libs = [
Object(NonMatching, "d/actor/d_a_npc.cpp"), Object(NonMatching, "d/actor/d_a_npc.cpp"),
Object(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d/actor/d_a_npc_cd.cpp"), Object(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d/actor/d_a_npc_cd.cpp"),
Object(NonMatching, "d/actor/d_a_npc_cd2.cpp"), Object(NonMatching, "d/actor/d_a_npc_cd2.cpp"),
Object(NonMatching, "d/actor/d_a_obj_item.cpp"), Object(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d/actor/d_a_obj_item.cpp"),
Object(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d/d_insect.cpp"), Object(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d/d_insect.cpp"),
Object(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d/actor/d_a_obj_ss_base.cpp"), Object(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d/actor/d_a_obj_ss_base.cpp"),
Object(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d/actor/d_a_player.cpp"), Object(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d/actor/d_a_player.cpp"),
@ -1612,7 +1607,7 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_vrbox"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_vrbox"),
ActorRel(NonMatching, "d_a_vrbox2"), ActorRel(NonMatching, "d_a_vrbox2"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_arrow"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_arrow"),
ActorRel(NonMatching, "d_a_boomerang"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_boomerang"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_crod"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_crod"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_demo00"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_demo00"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_disappear"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_disappear"),
@ -1850,48 +1845,48 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_myna"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_myna"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_ni"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_ni"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_aru"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_aru"),
ActorRel(Equivalent, "d_a_npc_ash", extra_cflags=[DANPCF_C_HACK]), # weak func order ActorRel(Equivalent, "d_a_npc_ash"), # weak func order
ActorRel(Equivalent, "d_a_npc_ashB", extra_cflags=[DANPCF_C_HACK]), # weak func order ActorRel(Equivalent, "d_a_npc_ashB"), # weak func order
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_bans"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_bans"),
ActorRel(NonMatching, "d_a_npc_blue_ns", extra_cflags=[DANPCF_C_HACK]), ActorRel(NonMatching, "d_a_npc_blue_ns"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_bou"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_bou"),
ActorRel(Equivalent, "d_a_npc_bouS", extra_cflags=[DANPCF_C_HACK]), # weak func order ActorRel(Equivalent, "d_a_npc_bouS"), # weak func order
ActorRel(NonMatching, "d_a_npc_cdn3"), ActorRel(NonMatching, "d_a_npc_cdn3"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_chat", extra_cflags=[DANPCF_C_HACK]), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_chat"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_chin", extra_cflags=[DANPCF_C_HACK]), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_chin"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_clerka"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_clerka"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_clerkb"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_clerkb"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_clerkt"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_clerkt"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_coach"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_coach"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_df"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_df"),
ActorRel(NonMatching, "d_a_npc_doc"), ActorRel(NonMatching, "d_a_npc_doc"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_doorboy", extra_cflags=[DANPCF_C_HACK]), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_doorboy"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_drainSol", extra_cflags=[DANPCF_C_HACK]), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_drainSol"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_du"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_du"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_fairy"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_fairy"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_fguard"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_fguard"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_gnd"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_gnd"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_gra", extra_cflags=[DANPCF_C_HACK]), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_gra"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_grc", extra_cflags=[DANPCF_C_HACK]), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_grc"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_grd", extra_cflags=[DANPCF_C_HACK]), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_grd"),
ActorRel(NonMatching, "d_a_npc_grm"), ActorRel(NonMatching, "d_a_npc_grm"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_grmc"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_grmc"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_gro", extra_cflags=[DANPCF_C_HACK]), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_gro"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_grr", extra_cflags=[DANPCF_C_HACK]), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_grr"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_grs", extra_cflags=[DANPCF_C_HACK]), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_grs"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_grz", extra_cflags=[DANPCF_C_HACK]), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_grz"),
ActorRel(NonMatching, "d_a_npc_guard"), ActorRel(NonMatching, "d_a_npc_guard"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_gwolf", extra_cflags=[DANPCF_C_HACK]), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_gwolf"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_hanjo"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_hanjo"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01", "Shield"), "d_a_npc_henna0"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01", "Shield"), "d_a_npc_henna0"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_hoz"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_hoz"),
ActorRel(Equivalent, "d_a_npc_impal", extra_cflags=[DANPCF_C_HACK]), # weak func order ActorRel(Equivalent, "d_a_npc_impal"), # weak func order
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_inko"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_inko"),
ActorRel(Equivalent, "d_a_npc_ins", extra_cflags=[DANPCF_C_HACK]), # weak func order ActorRel(Equivalent, "d_a_npc_ins"), # weak func order
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_jagar"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_jagar"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_kasi_hana", extra_cflags=[DANPCF_C_HACK]), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_kasi_hana"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_kasi_kyu", extra_cflags=[DANPCF_C_HACK]), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_kasi_kyu"),
ActorRel(Equivalent, "d_a_npc_kasi_mich", extra_cflags=[DANPCF_C_HACK]), # idk this why can't link ActorRel(Equivalent, "d_a_npc_kasi_mich"), # idk this why can't link
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01", "Shield"), "d_a_npc_kdk"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01", "Shield"), "d_a_npc_kdk"),
ActorRel(NonMatching, "d_a_npc_kn"), ActorRel(NonMatching, "d_a_npc_kn"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_knj"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_knj"),
@ -1904,8 +1899,8 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_midp"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_midp"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01", "ShieldD"), "d_a_npc_mk"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01", "ShieldD"), "d_a_npc_mk"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_moi"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_moi"),
ActorRel(NonMatching, "d_a_npc_moir", extra_cflags=[DANPCF_C_HACK]), ActorRel(NonMatching, "d_a_npc_moir"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_myna2", extra_cflags=[DANPCF_C_HACK]), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_myna2"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_ne"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_ne"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01", "ShieldD"), "d_a_npc_p2"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01", "ShieldD"), "d_a_npc_p2"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_pachi_besu"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_pachi_besu"),
@ -1915,9 +1910,9 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_passer2"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_passer2"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_post"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_post"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_pouya"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_pouya"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_prayer", extra_cflags=[DANPCF_C_HACK]), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_prayer"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_raca"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_raca"),
ActorRel(Equivalent, "d_a_npc_rafrel", extra_cflags=[DANPCF_C_HACK]), # weak func order ActorRel(Equivalent, "d_a_npc_rafrel"), # weak func order
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_saru"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_saru"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_seib"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_seib"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_seic"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_seic"),
@ -1925,26 +1920,26 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_seira"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_seira"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_seira2"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_seira2"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_seirei"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_seirei"),
ActorRel(Equivalent, "d_a_npc_shad", extra_cflags=[DANPCF_C_HACK]), # weak func order ActorRel(Equivalent, "d_a_npc_shad"), # weak func order
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_shaman"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_shaman"),
ActorRel(NonMatching, "d_a_npc_shoe", extra_cflags=[DANPCF_C_HACK]), ActorRel(NonMatching, "d_a_npc_shoe"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_shop0"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_shop0"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_shop_maro"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_shop_maro"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_sola"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_sola"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_soldierA", extra_cflags=[DANPCF_C_HACK]), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_soldierA"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_soldierB", extra_cflags=[DANPCF_C_HACK]), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_soldierB"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_sq"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_sq"),
ActorRel(NonMatching, "d_a_npc_the", extra_cflags=[DANPCF_C_HACK]), ActorRel(NonMatching, "d_a_npc_the"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_theB", extra_cflags=[DANPCF_C_HACK]), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_theB"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_tk"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_tk"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_tkc", extra_cflags=[DANPCF_C_HACK]), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_tkc"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_tkj2"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_tkj2"),
ActorRel(NonMatching, "d_a_npc_tks", extra_cflags=[DANPCF_C_HACK]), ActorRel(NonMatching, "d_a_npc_tks"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_toby"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_toby"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_tr"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_tr"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_uri"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_uri"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_worm"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_worm"),
ActorRel(NonMatching, "d_a_npc_wrestler", extra_cflags=[DANPCF_C_HACK]), ActorRel(NonMatching, "d_a_npc_wrestler"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_yamid"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_yamid"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_yamis"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_yamis"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_yamit"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_yamit"),
@ -1956,9 +1951,9 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_zelR"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_zelR"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_zelRo"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_zelRo"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_zelda"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_zelda"),
ActorRel(Equivalent, "d_a_npc_zra", extra_cflags=[DANPCF_C_HACK]), # weak func order ActorRel(Equivalent, "d_a_npc_zra"), # weak func order
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_zrc", extra_cflags=[DANPCF_C_HACK]), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_zrc"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_zrz", extra_cflags=[DANPCF_C_HACK]), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_zrz"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_Lv5Key"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_Lv5Key"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_Turara"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_Turara"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_TvCdlst"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_TvCdlst"),
@ -2226,7 +2221,7 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_thashi"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_thashi"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_thdoor"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_thdoor"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_timeFire"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_timeFire"),
ActorRel(Equivalent, "d_a_obj_tks", extra_cflags=[DANPCF_C_HACK]), # weak function order ActorRel(Equivalent, "d_a_obj_tks"), # weak function order
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_tmoon"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_tmoon"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_toaru_maki"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_toaru_maki"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_toby"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_toby"),

View File

@ -488,8 +488,8 @@ template <typename T>
struct TBox2 : public TBox<TVec2<T> > { struct TBox2 : public TBox<TVec2<T> > {
TBox2() {} TBox2() {}
TBox2(const TVec2<f32>& _i, const TVec2<f32>& _f) { TBox2(const TVec2<f32>& _i, const TVec2<f32>& _f) {
i.set(_i); TBox<TVec2<T> >::i.set(_i);
f.set(_f); TBox<TVec2<T> >::f.set(_f);
} }
TBox2(f32 x0, f32 y0, f32 x1, f32 y1) { set(x0, y0, x1, y1); } TBox2(f32 x0, f32 y0, f32 x1, f32 y1) { set(x0, y0, x1, y1); }

View File

@ -488,10 +488,6 @@ public:
void setIdx(int i_idx) { mIdx = i_idx; } void setIdx(int i_idx) { mIdx = i_idx; }
const int getIdx() { return mIdx; } const int getIdx() { return mIdx; }
#if VERSION != VERSION_SHIELD_DEBUG
// fakematch inline to fix daNpcT_Path_c::chkPassed1
const u16 get_u16_Idx() { return mIdx; }
#endif
dPath* getPathInfo() { return mPathInfo; } dPath* getPathInfo() { return mPathInfo; }
@ -1149,7 +1145,10 @@ public:
/* 5 */ LOOK_ATTN, /* 5 */ LOOK_ATTN,
}; };
daNpcF_c() { initialize(); } daNpcF_c() {
FORCE_DONT_INLINE;
initialize();
}
/* 80152014 */ BOOL execute(); /* 80152014 */ BOOL execute();
/* 801522AC */ int draw(BOOL, BOOL, f32, _GXColorS10*, BOOL); /* 801522AC */ int draw(BOOL, BOOL, f32, _GXColorS10*, BOOL);
/* 80152614 */ static void tgHitCallBack(fopAc_ac_c*, dCcD_GObjInf*, fopAc_ac_c*, /* 80152614 */ static void tgHitCallBack(fopAc_ac_c*, dCcD_GObjInf*, fopAc_ac_c*,

View File

@ -41,9 +41,9 @@ public:
/* 80B9E388 */ int Draw(); /* 80B9E388 */ int Draw();
/* 80B9E478 */ int Delete(); /* 80B9E478 */ int Delete();
u8 getSwBit1() { return fopAcM_GetParamBit(this, 0, 8); } int getSwBit1() { return fopAcM_GetParamBit(this, 0, 8); }
u8 getSwBit2() { return fopAcM_GetParamBit(this, 8, 8); } int getSwBit2() { return fopAcM_GetParamBit(this, 8, 8); }
u8 getSwBit3() { return fopAcM_GetParamBit(this, 16, 8); } int getSwBit3() { return fopAcM_GetParamBit(this, 16, 8); }
s32 getEvetID() { s32 getEvetID() {
return fopAcM_GetParamBit(this, 0x18, 8); return fopAcM_GetParamBit(this, 0x18, 8);
@ -51,6 +51,7 @@ public:
u8 getWaitTime() { return shape_angle.z; } u8 getWaitTime() { return shape_angle.z; }
int getItemTbleNum() { return shape_angle.x >> 8 & 0xff; } int getItemTbleNum() { return shape_angle.x >> 8 & 0xff; }
int getState() { return shape_angle.x; }
static const dCcD_SrcGObjInf mCcDObjInfo; static const dCcD_SrcGObjInf mCcDObjInfo;
static dCcD_SrcCyl mCcDCyl; static dCcD_SrcCyl mCcDCyl;
@ -76,7 +77,7 @@ private:
/* 0x7a8 */ dBgS_ObjAcch mAcch; /* 0x7a8 */ dBgS_ObjAcch mAcch;
/* 0x980 */ dBgW* field_0x980; /* 0x980 */ dBgW* field_0x980;
/* 0x984 */ u8 field_0x984; /* 0x984 */ u8 field_0x984;
/* 0x988 */ u32 field_0x988; /* 0x988 */ u32 mEmID;
/* 0x98c */ u8 field_0x98c; /* 0x98c */ u8 field_0x98c;
/* 0x98d */ u8 field_0x98d[0x994 - 0x98d]; /* 0x98d */ u8 field_0x98d[0x994 - 0x98d];
/* 0x994 */ u8 field_0x994; /* 0x994 */ u8 field_0x994;

View File

@ -75,4 +75,23 @@ void* __memcpy(void*, const void*, int);
#define READU32_BE(ptr, offset) \ #define READU32_BE(ptr, offset) \
(((u32)ptr[offset] << 24) | ((u32)ptr[offset + 1] << 16) | ((u32)ptr[offset + 2] << 8) | (u32)ptr[offset + 3]); (((u32)ptr[offset] << 24) | ((u32)ptr[offset + 1] << 16) | ((u32)ptr[offset + 2] << 8) | (u32)ptr[offset + 3]);
// Hack to trick the compiler into not inlining functions that use this macro.
#define FORCE_DONT_INLINE \
(void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; \
(void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; \
(void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; \
(void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; \
(void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; \
(void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; \
(void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; \
(void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; \
(void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; \
(void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; \
(void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; \
(void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; \
(void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; \
(void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; \
(void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; \
(void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0; (void*)0;
#endif #endif

View File

@ -658,10 +658,7 @@ bool J2DWindowEx::setBlackWhite(JUtility::TColor black, JUtility::TColor white)
return false; return false;
} }
bool bVar1 = false; bool bVar1 = (u32)black != 0 || (u32)white != 0xffffffff;
if ((u32)black != 0 || (u32)white != 0xffffffff) {
bVar1 = true;
}
u8 uVar3 = bVar1 ? 2 : 1; u8 uVar3 = bVar1 ? 2 : 1;
for (int i = 0; i < 4; i++) { for (int i = 0; i < 4; i++) {
mFrameMaterial[i]->getTevBlock()->setTevStageNum(uVar3); mFrameMaterial[i]->getTevBlock()->setTevStageNum(uVar3);

View File

@ -118,7 +118,7 @@ bool JASHeap::free() {
JSUTreeIterator<JASHeap> stack_20; JSUTreeIterator<JASHeap> stack_20;
for (JSUTreeIterator<JASHeap> it(mTree.getFirstChild()); it != mTree.getEndChild(); it = stack_20) { for (JSUTreeIterator<JASHeap> it(mTree.getFirstChild()); it != mTree.getEndChild(); it = stack_20) {
stack_20 = it; stack_20 = it;
stack_20++; ++stack_20;
it->free(); it->free();
} }
JSUTree<JASHeap>* parentTree = mTree.getParent(); JSUTree<JASHeap>* parentTree = mTree.getParent();

View File

@ -155,7 +155,7 @@ void TObject::prepare(data::TParse_TBlock const& rBlock, TControl* pControl) {
JGADGET_WARNMSG(211, "unknown paragraph : " << u32Type); JGADGET_WARNMSG(211, "unknown paragraph : " << u32Type);
} }
pData = dat.next; pData = dat.next;
JUT_ASSERT(214, pData!=0); JUT_ASSERT(214, pData!=NULL);
} }
end: end:
JGADGET_ASSERTWARN(216, pData==pNext); JGADGET_ASSERTWARN(216, pData==pNext);
@ -414,7 +414,7 @@ bool TParse::parseHeader_next(void const** ppData_inout, u32* puBlock_out, u32 f
ASSERT(puBlock_out != 0); ASSERT(puBlock_out != 0);
const void* pData = *ppData_inout; const void* pData = *ppData_inout;
ASSERT(pData != 0); ASSERT(pData != NULL);
const data::TParse_THeader header(pData); const data::TParse_THeader header(pData);
*ppData_inout = header.getContent(); *ppData_inout = header.getContent();
@ -449,7 +449,7 @@ bool TParse::parseBlock_next(void const** ppData_inout, u32* puData_out, u32 fla
ASSERT(puData_out != 0); ASSERT(puData_out != 0);
const void* pData = *ppData_inout; const void* pData = *ppData_inout;
ASSERT(pData != 0); ASSERT(pData != NULL);
data::TParse_TBlock blk(pData); data::TParse_TBlock blk(pData);
*ppData_inout = blk.getNext(); *ppData_inout = blk.getNext();
*puData_out = blk.get_size(); *puData_out = blk.get_size();

View File

@ -14,7 +14,7 @@ namespace stb {
namespace data { namespace data {
void TParse_TSequence::getData(TData* pData) const { void TParse_TSequence::getData(TData* pData) const {
ASSERT(pData != 0); ASSERT(pData != NULL);
pData->content = NULL; pData->content = NULL;
pData->next = NULL; pData->next = NULL;
@ -35,7 +35,7 @@ void TParse_TSequence::getData(TData* pData) const {
} }
void TParse_TParagraph::getData(TData* pData) const { void TParse_TParagraph::getData(TData* pData) const {
ASSERT(pData != 0); ASSERT(pData != NULL);
const void* data = getRaw(); const void* data = getRaw();
u32 result; u32 result;

View File

@ -198,29 +198,31 @@ void TObject::process_sequence_() {
switch (type) { switch (type) {
case 0: case 0:
JUT_EXPECT(u32Value == 0); JUT_EXPECT(u32Value == 0);
JUT_EXPECT(pContent == 0); JUT_EXPECT(pContent == NULL);
break; break;
case 1: case 1:
JUT_EXPECT(pContent == 0); JUT_EXPECT(pContent == NULL);
setFlag_operation_(u32Value); setFlag_operation_(u32Value);
break; break;
case 2: case 2:
JUT_EXPECT(pContent == 0); JUT_EXPECT(pContent == NULL);
setWait(u32Value); setWait(u32Value);
break; break;
case 3: case 3: {
JUT_EXPECT(pContent == 0); JUT_EXPECT(pContent == NULL);
s32 off = toInt32FromUInt24_(u32Value); s32 off = toInt32FromUInt24_(u32Value);
void* nextseq = (void*)getSequence_offset(off); void* nextseq = (void*)getSequence_offset(off);
setSequence_next(nextseq); setSequence_next(nextseq);
break; break;
case 4: }
JUT_EXPECT(pContent == 0); case 4: {
JUT_EXPECT(pContent == NULL);
u32 val = toInt32FromUInt24_(u32Value); u32 val = toInt32FromUInt24_(u32Value);
suspend(val); suspend(val);
break; break;
case 0x80: }
ASSERT(pContent != 0); case 0x80: {
ASSERT(pContent != NULL);
void* p = (void*)pContent; void* p = (void*)pContent;
data::TParse_TParagraph para(NULL); data::TParse_TParagraph para(NULL);
while (p < pNext) { while (p < pNext) {
@ -234,10 +236,11 @@ void TObject::process_sequence_() {
on_paragraph(para_dat.type, para_dat.content, para_dat.param); on_paragraph(para_dat.type, para_dat.content, para_dat.param);
} }
p = (void*)para_dat.next; p = (void*)para_dat.next;
ASSERT(p != 0); ASSERT(p != NULL);
} }
JUT_EXPECT(p == pNext); JUT_EXPECT(p == pNext);
break; break;
}
default: default:
JUTWarn w; JUTWarn w;
w << "unknown sequence : " << dat.type; w << "unknown sequence : " << dat.type;
@ -248,32 +251,34 @@ void TObject::process_sequence_() {
void TObject::process_paragraph_reserved_(u32 arg1, const void* pContent, u32 uSize) { void TObject::process_paragraph_reserved_(u32 arg1, const void* pContent, u32 uSize) {
switch (arg1) { switch (arg1) {
case 0x1: case 0x1:
ASSERT(pContent != 0); ASSERT(pContent != NULL);
ASSERT(uSize == 4); ASSERT(uSize == 4);
setFlag_operation_(*(u32*)pContent); setFlag_operation_(*(u32*)pContent);
break; break;
case 0x2: case 0x2:
ASSERT(pContent != 0); ASSERT(pContent != NULL);
ASSERT(uSize == 4); ASSERT(uSize == 4);
setWait(*(u32*)pContent); setWait(*(u32*)pContent);
break; break;
case 0x3: case 0x3: {
ASSERT(pContent != 0); ASSERT(pContent != NULL);
ASSERT(uSize == 4); ASSERT(uSize == 4);
const void* seq = getSequence_offset(*(s32*)pContent); const void* seq = getSequence_offset(*(s32*)pContent);
setSequence_next(seq); setSequence_next(seq);
break; break;
}
case 0x80: case 0x80:
on_data(NULL, 0, pContent, uSize); on_data(NULL, 0, pContent, uSize);
break; break;
case 0x81: case 0x81: {
data::TParse_TParagraph_dataID dataID(pContent); data::TParse_TParagraph_dataID dataID(pContent);
const void* temp = dataID.getContent(); const void* temp = dataID.getContent();
on_data(dataID.get_ID(), dataID.get_IDSize(), temp, on_data(dataID.get_ID(), dataID.get_IDSize(), temp,
uSize - ((uintptr_t)temp - (uintptr_t)dataID.getRaw())); uSize - ((uintptr_t)temp - (uintptr_t)dataID.getRaw()));
break; break;
}
case 0x82: case 0x82:
ASSERT(pContent != 0); ASSERT(pContent != NULL);
break; break;
} }
} }
@ -300,7 +305,7 @@ void TControl::appendObject(TObject* p) {
} }
void TControl::removeObject(TObject* p) { void TControl::removeObject(TObject* p) {
ASSERT(p != 0); ASSERT(p != NULL);
ASSERT(p->getControl() == this); ASSERT(p->getControl() == this);
p->setControl_(NULL); p->setControl_(NULL);
mObjectContainer.Erase(p); mObjectContainer.Erase(p);
@ -308,7 +313,7 @@ void TControl::removeObject(TObject* p) {
void TControl::destroyObject(TObject* p) { void TControl::destroyObject(TObject* p) {
removeObject(p); removeObject(p);
ASSERT(pFactory != 0); ASSERT(pFactory != NULL);
pFactory->destroy(p); pFactory->destroy(p);
} }
@ -376,11 +381,11 @@ TParse::TParse(TControl* pControl) : pControl(pControl) {}
TParse::~TParse() {} TParse::~TParse() {}
bool TParse::parseHeader_next(const void** ppData_inout, u32* puBlock_out, u32 flags) { bool TParse::parseHeader_next(const void** ppData_inout, u32* puBlock_out, u32 flags) {
ASSERT(ppData_inout != 0); ASSERT(ppData_inout != NULL);
ASSERT(puBlock_out != 0); ASSERT(puBlock_out != NULL);
const void* pData = *ppData_inout; const void* pData = *ppData_inout;
ASSERT(pData != 0); ASSERT(pData != NULL);
const data::TParse_THeader header(pData); const data::TParse_THeader header(pData);
*ppData_inout = header.getContent(); *ppData_inout = header.getContent();
@ -411,11 +416,11 @@ bool TParse::parseHeader_next(const void** ppData_inout, u32* puBlock_out, u32 f
} }
bool TParse::parseBlock_next(void const** ppData_inout, u32* puData_out, u32 flags) { bool TParse::parseBlock_next(void const** ppData_inout, u32* puData_out, u32 flags) {
ASSERT(ppData_inout != 0); ASSERT(ppData_inout != NULL);
ASSERT(puData_out != 0); ASSERT(puData_out != NULL);
const void* pData = *ppData_inout; const void* pData = *ppData_inout;
ASSERT(pData != 0); ASSERT(pData != NULL);
data::TParse_TBlock blk(pData); data::TParse_TBlock blk(pData);
*ppData_inout = blk.getNext(); *ppData_inout = blk.getNext();
@ -433,7 +438,7 @@ bool TParse::parseBlock_block(const data::TParse_TBlock& ppBlock, u32 flags) {
bool TParse::parseBlock_object(const data::TParse_TBlock_object& ppObject, u32 flags) { bool TParse::parseBlock_object(const data::TParse_TBlock_object& ppObject, u32 flags) {
TControl* pControl = getControl(); TControl* pControl = getControl();
ASSERT(pControl != 0); ASSERT(pControl != NULL);
if (ppObject.get_type() == data::BLOCK_NONE) { if (ppObject.get_type() == data::BLOCK_NONE) {
TObject_control& ref = pControl->referObject_control(); TObject_control& ref = pControl->referObject_control();

View File

@ -1259,6 +1259,7 @@ static int daArrow_delete(daArrow_c* i_this) {
} }
AUDIO_INSTANCES; AUDIO_INSTANCES;
template<>
JAUSectionHeap* JASGlobalInstance<JAUSectionHeap>::sInstance; JAUSectionHeap* JASGlobalInstance<JAUSectionHeap>::sInstance;
/* 8049DE8C-8049DEAC -00001 0020+00 1/0 0/0 0/0 .data l_daArrowMethodTable */ /* 8049DE8C-8049DEAC -00001 0020+00 1/0 0/0 0/0 .data l_daArrowMethodTable */

View File

@ -5724,4 +5724,5 @@ extern actor_process_profile_definition g_profile_B_ZANT = {
}; };
AUDIO_INSTANCES; AUDIO_INSTANCES;
template<>
JAUSectionHeap* JASGlobalInstance<JAUSectionHeap>::sInstance; JAUSectionHeap* JASGlobalInstance<JAUSectionHeap>::sInstance;

View File

@ -1585,3 +1585,6 @@ extern actor_process_profile_definition g_profile_BOOMERANG = {
}; };
AUDIO_INSTANCES; AUDIO_INSTANCES;
class JAUSectionHeap;
template<>
JAUSectionHeap* JASGlobalInstance<JAUSectionHeap>::sInstance;

View File

@ -964,4 +964,5 @@ extern actor_process_profile_definition g_profile_CANOE = {
}; };
AUDIO_INSTANCES AUDIO_INSTANCES
template<>
JAUSectionHeap* JASGlobalInstance<JAUSectionHeap>::sInstance; JAUSectionHeap* JASGlobalInstance<JAUSectionHeap>::sInstance;

View File

@ -1258,5 +1258,5 @@ extern actor_process_profile_definition g_profile_CSTATUE = {
AUDIO_INSTANCES; AUDIO_INSTANCES;
#include "JSystem/JAudio2/JAUSectionHeap.h" #include "JSystem/JAudio2/JAUSectionHeap.h"
template <> template<>
JAUSectionHeap* JASGlobalInstance<JAUSectionHeap>::sInstance; JAUSectionHeap* JASGlobalInstance<JAUSectionHeap>::sInstance;

View File

@ -237,7 +237,7 @@ static void hit_check(e_arrow_class* i_this) {
/* 8067D21C-8067D40C 000B3C 01F0+00 1/1 0/0 0/0 .text e_arrow_shot__FP13e_arrow_class */ /* 8067D21C-8067D40C 000B3C 01F0+00 1/1 0/0 0/0 .text e_arrow_shot__FP13e_arrow_class */
static void e_arrow_shot(e_arrow_class* i_this) { static void e_arrow_shot(e_arrow_class* i_this) {
switch (i_this->mMode) { switch (i_this->mMode) {
case 0: case 0: {
i_this->speedF = 100.0f; i_this->speedF = 100.0f;
i_this->mMode = 1; i_this->mMode = 1;
@ -254,6 +254,7 @@ static void e_arrow_shot(e_arrow_class* i_this) {
i_this->field_0x5d0 = parent_p->speed.x; i_this->field_0x5d0 = parent_p->speed.x;
i_this->field_0x5d4 = parent_p->speed.z; i_this->field_0x5d4 = parent_p->speed.z;
} }
}
case 1: case 1:
if (i_this->mFlags & 0x20) { if (i_this->mFlags & 0x20) {
fopAc_ac_c* coach_p = fopAcM_SearchByName(PROC_NPC_COACH); fopAc_ac_c* coach_p = fopAcM_SearchByName(PROC_NPC_COACH);

View File

@ -198,17 +198,24 @@ int daE_WS_c::checkPlayerPos() {
} }
/* 807E4568-807E470C 000C48 01A4+00 1/1 0/0 0/0 .text checkAttackEnd__8daE_WS_cFv */ /* 807E4568-807E470C 000C48 01A4+00 1/1 0/0 0/0 .text checkAttackEnd__8daE_WS_cFv */
// NONMATCHING
bool daE_WS_c::checkAttackEnd() { bool daE_WS_c::checkAttackEnd() {
cXyz player_pos; cXyz player_pos;
mDoMtx_stack_c::copy(daPy_getLinkPlayerActorClass()->getModelJointMtx(0)); mDoMtx_stack_c::copy(daPy_getLinkPlayerActorClass()->getModelJointMtx(0));
mDoMtx_stack_c::multVecZero(&player_pos); mDoMtx_stack_c::multVecZero(&player_pos);
if (!(daPy_getPlayerActorClass()->checkClimbMove() || BOOL r30 = false;
if (
daPy_getPlayerActorClass()->checkClimbMove() ||
dComIfGp_checkPlayerStatus1(0, 0x02000000) || dComIfGp_checkPlayerStatus1(0, 0x02000000) ||
dComIfGp_checkPlayerStatus1(0, 0x10000) || dComIfGp_checkPlayerStatus1(0, 0x10000) ||
calcTargetDist(current.pos, player_pos) < 200.0f) || calcTargetDist(current.pos, player_pos) < 200.0f
(!checkInSearchRange(current.pos, field_0x65c) || checkBeforeBg(shape_angle.y))) ) {
r30 = true;
}
if (!r30 ||
!checkInSearchRange(current.pos, field_0x65c) ||
checkBeforeBg(shape_angle.y)
)
{ {
setActionMode(ACTION_WAIT_e); setActionMode(ACTION_WAIT_e);
speedF = 0.0f; speedF = 0.0f;

View File

@ -6409,4 +6409,5 @@ extern actor_process_profile_definition g_profile_MG_ROD = {
AUDIO_INSTANCES AUDIO_INSTANCES
#include "JSystem/JAudio2/JAUSectionHeap.h" #include "JSystem/JAudio2/JAUSectionHeap.h"
template<>
JAUSectionHeap* JASGlobalInstance<JAUSectionHeap>::sInstance; JAUSectionHeap* JASGlobalInstance<JAUSectionHeap>::sInstance;

View File

@ -467,12 +467,7 @@ int daNpcT_Path_c::chkPassed1(cXyz i_pnt, int i_num) {
cXyz next_pos; cXyz next_pos;
cXyz sp5C; cXyz sp5C;
#if VERSION != VERSION_SHIELD_DEBUG u16 cur_idx = (int)(u16)getIdx();
// FIXME: fakematch. I literally don't know how else to get this to match....
u16 cur_idx = get_u16_Idx();
#else
u16 cur_idx = getIdx();
#endif
u16 prev_idx, next_idx; u16 prev_idx, next_idx;
prev_idx = next_idx = cur_idx; prev_idx = next_idx = cur_idx;

View File

@ -783,9 +783,7 @@ void daNpcMoiR_c::playExpression() {
daNpcF_anmPlayData* pDat2[1] = {&dat2}; daNpcF_anmPlayData* pDat2[1] = {&dat2};
daNpcF_anmPlayData dat3 = {ANM_FH_SERIOUS, mpHIO->m.common.morf_frame, 0}; daNpcF_anmPlayData dat3 = {ANM_FH_SERIOUS, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat3[1] = {&dat3}; daNpcF_anmPlayData* pDat3[1] = {&dat3};
// FIXME: daNpcF hack in configure.py prevents us from converting more of these, daNpcF_anmPlayData dat4 = {ANM_F_TAKAJO_HI, mpHIO->m.common.morf_frame, 0};
// otherwise this function will not inline in GCN.
daNpcF_anmPlayData dat4 = {ANM_F_TAKAJO_HI, daNpcMoiR_Param_c::m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat4[1] = {&dat4}; daNpcF_anmPlayData* pDat4[1] = {&dat4};
daNpcF_anmPlayData dat5 = {ANM_FH_TAKAJO_HI, 0.0f, 0}; daNpcF_anmPlayData dat5 = {ANM_FH_TAKAJO_HI, 0.0f, 0};
daNpcF_anmPlayData* pDat5[1] = {&dat5}; daNpcF_anmPlayData* pDat5[1] = {&dat5};
@ -795,9 +793,9 @@ void daNpcMoiR_c::playExpression() {
daNpcF_anmPlayData* pDat7[1] = {&dat7}; daNpcF_anmPlayData* pDat7[1] = {&dat7};
daNpcF_anmPlayData dat8 = {ANM_F_HOLD_S, 0.0f, 0}; daNpcF_anmPlayData dat8 = {ANM_F_HOLD_S, 0.0f, 0};
daNpcF_anmPlayData* pDat8[1] = {&dat8}; daNpcF_anmPlayData* pDat8[1] = {&dat8};
daNpcF_anmPlayData dat9 = {ANM_FH_HOLD_S, daNpcMoiR_Param_c::m.common.morf_frame, 0}; daNpcF_anmPlayData dat9 = {ANM_FH_HOLD_S, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat9[1] = {&dat9}; daNpcF_anmPlayData* pDat9[1] = {&dat9};
daNpcF_anmPlayData dat10 = {ANM_NONE, daNpcMoiR_Param_c::m.common.morf_frame, 0}; daNpcF_anmPlayData dat10 = {ANM_NONE, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat10[1] = {&dat10}; daNpcF_anmPlayData* pDat10[1] = {&dat10};
daNpcF_anmPlayData* pDat11[1] = {&dat0}; daNpcF_anmPlayData* pDat11[1] = {&dat0};

View File

@ -1032,16 +1032,6 @@ void daNpcTheB_c::lookat() {
mLookat.calc(this, model->getBaseTRMtx(), lookat_angle, FALSE, angle_delta, false); mLookat.calc(this, model->getBaseTRMtx(), lookat_angle, FALSE, angle_delta, false);
} }
#pragma inline_max_size(503)
/*
FAKEMATCH
The DANPCF_C_HACK sets an inline size that prevents the parent constructor
from being inlined, however that same hack also prevents the following
function from being inlined when it needs to.
Once a proper solution is found for the constructor issue, the pragma
should be removed
*/
inline void daNpcTheB_c::setWaitAnimation() { inline void daNpcTheB_c::setWaitAnimation() {
if ( if (
mAnm_p->getAnm() == getTrnsfrmKeyAnmP(l_arcName, l_bckGetParamList[8].fileIdx) mAnm_p->getAnm() == getTrnsfrmKeyAnmP(l_arcName, l_bckGetParamList[8].fileIdx)

View File

@ -89,10 +89,8 @@ static u32 const l_bmdIdx[2] = {5, 8};
/* 80B9CD74-80B9CED8 0002D4 0164+00 1/0 0/0 0/0 .text CreateHeap__10daTurara_cFv */ /* 80B9CD74-80B9CED8 0002D4 0164+00 1/0 0/0 0/0 .text CreateHeap__10daTurara_cFv */
int daTurara_c::CreateHeap() { int daTurara_c::CreateHeap() {
J3DModelData* modelData = (J3DModelData*) dComIfG_getObjectRes("M_Turara", l_bmdIdx[field_0x98c]); J3DModelData* modelData = (J3DModelData*) dComIfG_getObjectRes("M_Turara", l_bmdIdx[field_0x98c]);
JUT_ASSERT(260, modelData != NULL);
if (modelData == NULL) {
// FIXME: For shield decomp matching, needs a JUT assert.
}
if (field_0x98c == 0) { if (field_0x98c == 0) {
mpModel[0] = mDoExt_J3DModel__create(modelData, 0, 0x11000084); mpModel[0] = mDoExt_J3DModel__create(modelData, 0, 0x11000084);
} else { } else {
@ -103,15 +101,12 @@ int daTurara_c::CreateHeap() {
} }
modelData = (J3DModelData*) dComIfG_getObjectRes("M_Turara", 9); modelData = (J3DModelData*) dComIfG_getObjectRes("M_Turara", 9);
if (modelData == NULL) { JUT_ASSERT(279, modelData != NULL);
// FIXME: For shield decomp matching, needs a JUT assert.
}
mpModel[1] = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); mpModel[1] = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
if (mpModel[1] == NULL) { if (mpModel[1] == NULL) {
return 0; return 0;
} }
dBgW* my_dBgW = new dBgW; field_0x980 = new dBgW;
field_0x980 = my_dBgW;
if (field_0x980 == NULL || field_0x980->Set((cBgD_t *)dComIfG_getObjectRes("M_Turara", 0xd), if (field_0x980 == NULL || field_0x980->Set((cBgD_t *)dComIfG_getObjectRes("M_Turara", 0xd),
1, &mBgMtx) != 0) { 1, &mBgMtx) != 0) {
field_0x980 = NULL; field_0x980 = NULL;
@ -123,19 +118,17 @@ int daTurara_c::CreateHeap() {
/* 80B9CED8-80B9D29C 000438 03C4+00 1/1 0/0 0/0 .text create__10daTurara_cFv */ /* 80B9CED8-80B9D29C 000438 03C4+00 1/1 0/0 0/0 .text create__10daTurara_cFv */
int daTurara_c::create() { int daTurara_c::create() {
fopAcM_ct(this, daTurara_c); fopAcM_ct(this, daTurara_c);
u8 my_bit = getSwBit3(); if (fopAcM_isSwitch(this, getSwBit3())) {
if (fopAcM_isSwitch(this, my_bit)) {
return cPhs_ERROR_e; return cPhs_ERROR_e;
} }
int phase = dComIfG_resLoad(&mPhaseReq,"M_Turara"); int phase = dComIfG_resLoad(&mPhaseReq,"M_Turara");
if (phase == cPhs_COMPLEATE_e) { if (phase == cPhs_COMPLEATE_e) {
u8 my_bool = 0; u8 r26 = 0;
field_0x98c = shape_angle.x; field_0x98c = getState();
if (field_0x98c != 0) { if (field_0x98c != 0) {
if (field_0x98c == 1) { if (field_0x98c == 1) {
my_bool = 1; r26 = 1;
u8 my_bit1 = getSwBit1(); fopAcM_onSwitch(this, getSwBit1());
fopAcM_onSwitch(this, my_bit1);
} }
fopAcM_SetGroup(this,0); fopAcM_SetGroup(this,0);
field_0x98c = 1; field_0x98c = 1;
@ -160,8 +153,7 @@ int daTurara_c::create() {
mCylCollider.Set(mCcDCyl); mCylCollider.Set(mCcDCyl);
mCylCollider.SetStts(&mColliderStts); mCylCollider.SetStts(&mColliderStts);
mCylCollider.OffAtSetBit(); mCylCollider.OffAtSetBit();
u8 my_bit1 = getSwBit1(); if (fopAcM_isSwitch(this, getSwBit1())) {
if (fopAcM_isSwitch(this, my_bit1)) {
field_0x984 = 1; field_0x984 = 1;
mCylCollider.OffCoSetBit(); mCylCollider.OffCoSetBit();
if (mpBgW) { if (mpBgW) {
@ -171,7 +163,7 @@ int daTurara_c::create() {
dComIfG_Bgsp().Regist(field_0x980, this); dComIfG_Bgsp().Regist(field_0x980, this);
field_0x980->Move(); field_0x980->Move();
} }
if (my_bool) { if (r26) {
mMode = 3; mMode = 3;
} else { } else {
setFallStat(); setFallStat();
@ -185,7 +177,9 @@ int daTurara_c::create() {
fopAcM_setCullSizeBox2(this, mpModel[field_0x984]->getModelData()); fopAcM_setCullSizeBox2(this, mpModel[field_0x984]->getModelData());
setBaseMtx(); setBaseMtx();
field_0x994 = 1; field_0x994 = 1;
// FIXME: Needs entryHIO here. #ifdef DEBUG
l_HIO.entryHIO("つらら");
#endif
} }
return phase; return phase;
} }
@ -226,9 +220,9 @@ void daTurara_c::move() {
mCylCollider.SetR(130.0f); mCylCollider.SetR(130.0f);
} }
mCylCollider.SetH(510.0f); mCylCollider.SetH(510.0f);
cXyz my_vec(current.pos); cXyz sp08(current.pos);
my_vec.y -= 50.0f; sp08.y -= 50.0f;
mCylCollider.SetC(my_vec); mCylCollider.SetC(sp08);
dComIfG_Ccsp()->Set(&mCylCollider); dComIfG_Ccsp()->Set(&mCylCollider);
} }
@ -247,21 +241,19 @@ void daTurara_c::modeWait() {
} }
} }
if (mCylCollider.ChkTgHit()) { if (mCylCollider.ChkTgHit()) {
dCcD_GObjInf* my_actor = mCylCollider.GetTgHitGObj(); dCcD_GObjInf* r29 = mCylCollider.GetTgHitGObj();
if (my_actor->GetAtType() == AT_TYPE_BOMB) { if (r29->GetAtType() == AT_TYPE_BOMB) {
if (getEvetID() != 0xff) { if (getEvetID() != 0xff) {
orderEvent(getEvetID(), 0xFF, 1); orderEvent(getEvetID(), 0xFF, 1);
} else { } else {
eventStart(); eventStart();
} }
} else if (my_actor->GetAtType() == AT_TYPE_IRON_BALL) { } else if (r29->GetAtType() == AT_TYPE_IRON_BALL) {
dComIfGp_particle_set(0x8a8f, &current.pos, NULL, NULL, NULL, 0xff, NULL, -1, NULL, NULL, NULL); dComIfGp_particle_set(0x8a8f, &current.pos, NULL, NULL);
dComIfGp_particle_set(0x8a90, &current.pos, NULL, NULL, NULL, 0xff, NULL, -1, NULL, NULL, NULL); dComIfGp_particle_set(0x8a90, &current.pos, NULL, NULL);
dComIfGp_particle_set(0x8a91, &current.pos, NULL, NULL, NULL, 0xff, NULL, -1, NULL, NULL, NULL); dComIfGp_particle_set(0x8a91, &current.pos, NULL, NULL);
s8 roomNo = fopAcM_GetRoomNo(this); mDoAud_seStart(Z2SE_OBJ_ICICLE_BRK, &current.pos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
mDoAud_seStart(Z2SE_OBJ_ICICLE_BRK, &current.pos, 0, dComIfGp_getReverb(roomNo)); fopAcM_onSwitch(this, getSwBit3());
u8 swbit3 = getSwBit3();
fopAcM_onSwitch(this, swbit3);
fopAcM_delete(this); fopAcM_delete(this);
} }
} }
@ -346,35 +338,30 @@ void daTurara_c::init_modeDropEnd() {
} }
mCylCollider.OffCoSetBit(); mCylCollider.OffCoSetBit();
mCylCollider.OffAtSetBit(); mCylCollider.OffAtSetBit();
u8 swbit1 = getSwBit1(); fopAcM_onSwitch(this, getSwBit1());
fopAcM_onSwitch(this, swbit1); mDoAud_seStart(Z2SE_OBJ_ICICLE_LAND, &current.pos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
s8 roomNo = fopAcM_GetRoomNo(this);
mDoAud_seStart(Z2SE_OBJ_ICICLE_LAND, &current.pos, 0, dComIfGp_getReverb(roomNo));
mMode = 3; mMode = 3;
} }
/* 80B9DE48-80B9E078 0013A8 0230+00 1/0 0/0 0/0 .text modeDropEnd__10daTurara_cFv */ /* 80B9DE48-80B9E078 0013A8 0230+00 1/0 0/0 0/0 .text modeDropEnd__10daTurara_cFv */
void daTurara_c::modeDropEnd() { void daTurara_c::modeDropEnd() {
if (mCylCollider.ChkTgHit()) { if (mCylCollider.ChkTgHit()) {
dCcD_GObjInf* my_actor = mCylCollider.GetTgHitGObj(); dCcD_GObjInf* r29 = mCylCollider.GetTgHitGObj();
u32 att_type = my_actor->GetAtType(); if ((r29->GetAtType() & AT_TYPE_UNK) || (r29->GetAtType() & AT_TYPE_20000000)) {
if ((att_type & AT_TYPE_UNK) || (att_type & AT_TYPE_20000000)) {
if (field_0x980) { if (field_0x980) {
dComIfG_Bgsp().Release(field_0x980); dComIfG_Bgsp().Release(field_0x980);
field_0x980->Move(); field_0x980->Move();
} }
csXyz my_vec(0, home.angle.y, 0); csXyz sp10(0, home.angle.y, 0);
fopAcM_createItemFromTable(&current.pos, getItemTbleNum(), -1, fopAcM_createItemFromTable(&current.pos, getItemTbleNum(), -1,
fopAcM_GetHomeRoomNo(this), &my_vec, 0, (cXyz*)NULL, fopAcM_GetHomeRoomNo(this), &sp10, 0, (cXyz*)NULL,
NULL, NULL, false); NULL, NULL, false);
} }
dComIfGp_particle_set(0x8a8f, &current.pos, NULL, NULL); dComIfGp_particle_set(0x8a8f, &current.pos, NULL, NULL);
dComIfGp_particle_set(0x8a90, &current.pos, NULL, NULL); dComIfGp_particle_set(0x8a90, &current.pos, NULL, NULL);
dComIfGp_particle_set(0x8a91, &current.pos, NULL, NULL); dComIfGp_particle_set(0x8a91, &current.pos, NULL, NULL);
s8 roomNo = fopAcM_GetRoomNo(this); mDoAud_seStart(Z2SE_OBJ_ICICLE_BRK, &current.pos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
mDoAud_seStart(Z2SE_OBJ_ICICLE_BRK, &current.pos, 0, dComIfGp_getReverb(roomNo)); fopAcM_onSwitch(this, getSwBit3());
u8 swbit3 = getSwBit3();
fopAcM_onSwitch(this, swbit3);
fopAcM_delete(this); fopAcM_delete(this);
} }
} }
@ -390,28 +377,25 @@ void daTurara_c::init_modeDropEnd2() {
} }
mCylCollider.OffCoSetBit(); mCylCollider.OffCoSetBit();
mCylCollider.OffAtSetBit(); mCylCollider.OffAtSetBit();
s8 roomNo = fopAcM_GetRoomNo(this); mDoAud_seStart(Z2SE_OBJ_ICICLE_BRK, &current.pos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
mDoAud_seStart(Z2SE_OBJ_ICICLE_BRK, &current.pos, 0, dComIfGp_getReverb(roomNo));
current.pos.y -= 100.0f; current.pos.y -= 100.0f;
cXyz first_vec(current.pos); cXyz first_vec(current.pos);
first_vec.y += 100.0f; first_vec.y += 100.0f;
s16 my_proc = PROC_E_KK; mEmID = fopAcM_create(PROC_E_KK, getSwBit1() << 0x10 | 3, &first_vec, fopAcM_GetRoomNo(this), 0, 0, -1);
field_0x988 = fopAcM_create(my_proc, getSwBit1() << 0x10 | 3, &first_vec, fopAcM_GetRoomNo(this), 0, 0, 0xffffffff); JUT_ASSERT(770, mEmID != fpcM_ERROR_PROCESS_ID_e);
// FIXME: JUT assert needed here
cXyz second_vec(0.7f, 0.7f, 0.7f); cXyz second_vec(0.7f, 0.7f, 0.7f);
dComIfGp_particle_set(0x8a8f, &first_vec, NULL, &second_vec); dComIfGp_particle_set(0x8a8f, &first_vec, NULL, &second_vec);
dComIfGp_particle_set(0x8a90, &first_vec, NULL, &second_vec); dComIfGp_particle_set(0x8a90, &first_vec, NULL, &second_vec);
dComIfGp_particle_set(0x8a91, &first_vec, NULL, &second_vec); dComIfGp_particle_set(0x8a91, &first_vec, NULL, &second_vec);
dComIfGp_particle_set(0x8a92, &first_vec, NULL, &second_vec); dComIfGp_particle_set(0x8a92, &first_vec, NULL, &second_vec);
u8 swbit = getSwBit3(); fopAcM_onSwitch(this, getSwBit3());
fopAcM_onSwitch(this, swbit);
field_0x994 = 0; field_0x994 = 0;
mMode = 4; mMode = 4;
} }
/* 80B9E338-80B9E388 001898 0050+00 1/0 0/0 0/0 .text modeDropEnd2__10daTurara_cFv */ /* 80B9E338-80B9E388 001898 0050+00 1/0 0/0 0/0 .text modeDropEnd2__10daTurara_cFv */
void daTurara_c::modeDropEnd2() { void daTurara_c::modeDropEnd2() {
if (fopAcM_SearchByID(field_0x988)) { if (fopAcM_SearchByID(mEmID)) {
fopAcM_delete(this); fopAcM_delete(this);
} }
} }

View File

@ -16,21 +16,6 @@
#include "f_op/f_op_camera_mng.h" #include "f_op/f_op_camera_mng.h"
#include "m_Do/m_Do_mtx.h" #include "m_Do/m_Do_mtx.h"
//
// Forward References:
//
extern "C" void itemGetNextExecute__8daItem_cFv();
extern "C" void checkPlayerGet__8daItem_cFv();
//
// External References:
//
extern "C" extern void* __vt__16Z2SoundObjSimple[8];
extern "C" void __dl__FPv();
extern "C" void __dt__14Z2SoundObjBaseFv();
/* 8015ADCC-8015B0B8 15570C 02EC+00 1/1 0/0 0/0 .text Reflect__FP4cXyzRC13cBgS_PolyInfof /* 8015ADCC-8015B0B8 15570C 02EC+00 1/1 0/0 0/0 .text Reflect__FP4cXyzRC13cBgS_PolyInfof
*/ */
static f32 Reflect(cXyz* i_vec, cBgS_PolyInfo const& i_polyinfo, f32 i_scale) { static f32 Reflect(cXyz* i_vec, cBgS_PolyInfo const& i_polyinfo, f32 i_scale) {
@ -105,8 +90,6 @@ void daItem_c::setBaseMtx_1() {
/* 8015B254-8015B320 155B94 00CC+00 2/2 0/0 0/0 .text /* 8015B254-8015B320 155B94 00CC+00 2/2 0/0 0/0 .text
* itemGetCoCallBack__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf */ * itemGetCoCallBack__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf */
// NONMATCHING - matches, but pushes up weak daPy_py_c functions incorrectly
// might need other TUs that use daPy_py_c weaks to be finished first
static void itemGetCoCallBack(fopAc_ac_c* i_coActorA, dCcD_GObjInf* i_coObjInfA, static void itemGetCoCallBack(fopAc_ac_c* i_coActorA, dCcD_GObjInf* i_coObjInfA,
fopAc_ac_c* i_coActorB, dCcD_GObjInf* i_coObjInfB) { fopAc_ac_c* i_coActorB, dCcD_GObjInf* i_coObjInfB) {
daItem_c* a_coActorA = (daItem_c*)i_coActorA; daItem_c* a_coActorA = (daItem_c*)i_coActorA;
@ -324,12 +307,6 @@ int daItem_c::_daItem_create() {
return phase_state; return phase_state;
} }
/* 8015BA3C-8015BA9C 15637C 0060+00 0/0 1/1 0/0 .text __dt__16Z2SoundObjSimpleFv */
// Z2SoundObjSimple::~Z2SoundObjSimple() {
extern "C" void __dt__16Z2SoundObjSimpleFv() {
// NONMATCHING
}
/* 8015BA9C-8015BD84 1563DC 02E8+00 1/1 0/0 0/0 .text _daItem_execute__8daItem_cFv */ /* 8015BA9C-8015BD84 1563DC 02E8+00 1/1 0/0 0/0 .text _daItem_execute__8daItem_cFv */
int daItem_c::_daItem_execute() { int daItem_c::_daItem_execute() {
field_0x950 = speed; field_0x950 = speed;

View File

@ -262,7 +262,6 @@ void daObjVolcBall_c::actionWarning() {
/* 80D22944-80D22C6C 000EA4 0328+00 1/0 0/0 0/0 .text actionEruption__15daObjVolcBall_cFv /* 80D22944-80D22C6C 000EA4 0328+00 1/0 0/0 0/0 .text actionEruption__15daObjVolcBall_cFv
*/ */
// NONMATCHING small regalloc
void daObjVolcBall_c::actionEruption() { void daObjVolcBall_c::actionEruption() {
if (!dComIfGp_getVibration().CheckQuake()) { if (!dComIfGp_getVibration().CheckQuake()) {
startQuake(); startQuake();

View File

@ -985,4 +985,5 @@ extern actor_process_profile_definition g_profile_SPINNER = {
AUDIO_INSTANCES AUDIO_INSTANCES
struct JAUSectionHeap; struct JAUSectionHeap;
template<>
JAUSectionHeap* JASGlobalInstance<JAUSectionHeap>::sInstance; JAUSectionHeap* JASGlobalInstance<JAUSectionHeap>::sInstance;

View File

@ -12,24 +12,6 @@
#include "m_Do/m_Do_lib.h" #include "m_Do/m_Do_lib.h"
#include "dol2asm.h" #include "dol2asm.h"
#if VERSION == VERSION_GCN_USA
// This is a HACK to get d_insect data at correct address due to
// issues with the d_a_obj_item vtable. TODO: fix daItem_c vtable
#pragma push
#pragma force_active on
SECTION_DATA extern void* __vt__8daItem_c__HACK[] = {
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
};
#pragma pop
#endif
/* 8015E010-8015E078 158950 0068+00 0/0 0/0 13/13 .text __ct__9dInsect_cFv */ /* 8015E010-8015E078 158950 0068+00 0/0 0/0 13/13 .text __ct__9dInsect_cFv */
dInsect_c::dInsect_c() { dInsect_c::dInsect_c() {
m_itemId = -1; m_itemId = -1;

View File

@ -1232,12 +1232,13 @@ void dMap_c::_move(f32 i_centerX, f32 i_centerZ, int i_roomNo, f32 param_3) {
break; break;
case 2: case 2:
switch (field_0x8f) { switch (field_0x8f) {
case 2: case 2: {
f32 temp_f31 = (f32)field_0x90 / 5.0f; f32 temp_f31 = (f32)field_0x90 / 5.0f;
setMapPaletteColorAlphaPer(0x2F, 0x32, temp_f31); setMapPaletteColorAlphaPer(0x2F, 0x32, temp_f31);
setMapPaletteColorAlphaPer(0x21, 0x2B, temp_f31); setMapPaletteColorAlphaPer(0x21, 0x2B, temp_f31);
break; break;
case 3: }
case 3: {
calcMapCenterXZ(field_0x88, &mCenterX, &mCenterZ); calcMapCenterXZ(field_0x88, &mCenterX, &mCenterZ);
f32 sp24, sp20; f32 sp24, sp20;
calcMapCenterXZ(field_0x84, &sp24, &sp20); calcMapCenterXZ(field_0x84, &sp24, &sp20);
@ -1268,11 +1269,13 @@ void dMap_c::_move(f32 i_centerX, f32 i_centerZ, int i_roomNo, f32 param_3) {
mCenterX += sp14; mCenterX += sp14;
mCenterZ -= sp10; mCenterZ -= sp10;
break; break;
case 4: }
case 4: {
f32 temp_f31_3 = 1.0f - ((f32)field_0x90 / 5.0f); f32 temp_f31_3 = 1.0f - ((f32)field_0x90 / 5.0f);
setMapPaletteColorAlphaPer(0x2F, 0x32, temp_f31_3); setMapPaletteColorAlphaPer(0x2F, 0x32, temp_f31_3);
setMapPaletteColorAlphaPer(0x21, 0x2B, temp_f31_3); setMapPaletteColorAlphaPer(0x21, 0x2B, temp_f31_3);
break; break;
}
case 6: case 6:
copyPalette(); copyPalette();
break; break;