Finish off furniture, all game code diffed

This commit is contained in:
Cuyler36
2025-08-17 04:25:30 -04:00
parent a25cc3257c
commit 6ba48a123f
10 changed files with 480 additions and 130 deletions
+1 -1
View File
@@ -3560,7 +3560,7 @@ audio.c:
.data start:0x00087810 end:0x000878A0
.bss start:0x002332D8 end:0x002332DC
f_furniture.o:
f_furniture.c:
.text start:0x002C4694 end:0x002C49C0
.text start:0x002C49C0 end:0x002C4B80
.text start:0x002C4B80 end:0x002C4C50
+61 -61
View File
@@ -58,18 +58,18 @@ nintendo_hi_0.o:
.text start:0x800084B0 end:0x800084B0
.data start:0x800CD680 end:0x800D6F80
jaudio_NES.o/dummyprobe.c:
jaudio_NES/game/dummyprobe.c:
.text start:0x800084B0 end:0x800084B8
jaudio_NES.o/audioheaders.c:
jaudio_NES/game/audioheaders.c:
.text start:0x800084B8 end:0x800084B8
.data start:0x800D6F80 end:0x800D8DC0
jaudio_NES.o/verysimple.c:
jaudio_NES/game/verysimple.c:
.text start:0x800084B8 end:0x80008540
.sdata start:0x802299A0 end:0x802299A8
jaudio_NES.o/emusound.c:
jaudio_NES/game/emusound.c:
.text start:0x80008540 end:0x80008540
.text start:0x80008540 end:0x80008D40
.text start:0x80008D40 end:0x80009400
@@ -88,7 +88,7 @@ jaudio_NES.o/emusound.c:
.sbss start:0x8022A160 end:0x8022A1C8
.sdata2 start:0x8022ABA0 end:0x8022AC20
jaudio_NES.o/game64.c:
jaudio_NES/game/game64.c:
.text start:0x8000BBC0 end:0x8000BBC0
.text start:0x8000BBC0 end:0x8000BD48
.text start:0x8000BD48 end:0x8001560C
@@ -99,35 +99,35 @@ jaudio_NES.o/game64.c:
.sbss start:0x8022A1C8 end:0x8022A270
.sdata2 start:0x8022AC20 end:0x8022AD20
jaudio_NES.o/melody.c:
jaudio_NES/game/melody.c:
.text start:0x8001560C end:0x80015A3C
.rodata start:0x800B3958 end:0x800B42C0
.sbss start:0x8022A270 end:0x8022A280
.sdata2 start:0x8022AD20 end:0x8022AD28
jaudio_NES.o/rhythm.c:
jaudio_NES/game/rhythm.c:
.text start:0x80015A3C end:0x800165DC
.bss start:0x80186CD8 end:0x80186D80
.sdata start:0x802299F0 end:0x802299F8
.sbss start:0x8022A280 end:0x8022A290
.sdata2 start:0x8022AD28 end:0x8022AD40
jaudio_NES.o/radio.c:
jaudio_NES/game/radio.c:
.text start:0x800165DC end:0x8001675C
.sdata2 start:0x8022AD40 end:0x8022AD50
jaudio_NES.o/kappa.c:
jaudio_NES/game/kappa.c:
.text start:0x8001675C end:0x80016830
.sbss start:0x8022A290 end:0x8022A298
.sdata2 start:0x8022AD50 end:0x8022AD60
jaudio_NES.o/staff.c:
jaudio_NES/game/staff.c:
.text start:0x80016830 end:0x80016D00
.data start:0x800DA2C8 end:0x800DA3E0
.sbss start:0x8022A298 end:0x8022A2A8
.sdata2 start:0x8022AD60 end:0x8022AD68
jaudio_NES.o/rspsim.c:
jaudio_NES/internal/rspsim.c:
.text start:0x80016D00 end:0x80017E60
.data start:0x800DA3E0 end:0x800DA668
.bss start:0x80186D80 end:0x80187EA0
@@ -135,23 +135,23 @@ jaudio_NES.o/rspsim.c:
.sbss start:0x8022A2A8 end:0x8022A2D0
.sdata2 start:0x8022AD68 end:0x8022AD70
jaudio_NES.o/aictrl.c:
jaudio_NES/internal/aictrl.c:
.text start:0x80017E60 end:0x80018620
.rodata start:0x800B42C0 end:0x800B42D8
.bss start:0x80187EA0 end:0x80187EC0
.sbss start:0x8022A2D0 end:0x8022A300
.sdata2 start:0x8022AD70 end:0x8022AD80
jaudio_NES.o/sample.c:
jaudio_NES/internal/sample.c:
.text start:0x80018620 end:0x80018900
jaudio_NES.o/dummyrom.c:
jaudio_NES/internal/dummyrom.c:
.text start:0x80018900 end:0x80018BA0
.rodata start:0x800B42D8 end:0x800B42E8
.bss start:0x8021F4F4 end:0x8021F508 align:4 common
.sbss start:0x8022A300 end:0x8022A320
jaudio_NES.o/audiothread.c:
jaudio_NES/internal/audiothread.c:
.text start:0x80018BA0 end:0x80019080
.text start:0x80019080 end:0x800190C0
.rodata start:0x800B42E8 end:0x800B42F8
@@ -160,46 +160,46 @@ jaudio_NES.o/audiothread.c:
.sbss start:0x8022A320 end:0x8022A340
.sdata2 start:0x8022AD80 end:0x8022AD88
jaudio_NES.o/neosthread.c:
jaudio_NES/internal/neosthread.c:
.text start:0x800190C0 end:0x80019360
.rodata start:0x800B42F8 end:0x800B4318
.bss start:0x8018DF20 end:0x80194340
.sdata start:0x80229A00 end:0x80229A08
.sbss start:0x8022A340 end:0x8022A358
jaudio_NES.o/streamctrl.c:
jaudio_NES/internal/streamctrl.c:
.text start:0x80019360 end:0x80019740
.data start:0x800DA668 end:0x800DA738
.bss start:0x80194340 end:0x801943B0
.sdata2 start:0x8022AD88 end:0x8022AD98
jaudio_NES.o/dspbuf.c:
jaudio_NES/internal/dspbuf.c:
.text start:0x80019740 end:0x80019AC0
.rodata start:0x800B4318 end:0x800B4330
.bss start:0x801943B0 end:0x801943C0
.sbss start:0x8022A358 end:0x8022A368
jaudio_NES.o/cpubuf.c:
jaudio_NES/internal/cpubuf.c:
.text start:0x80019AC0 end:0x80019DA0
.bss start:0x801943C0 end:0x801943D0
.sbss start:0x8022A368 end:0x8022A378
jaudio_NES.o/playercall.c:
jaudio_NES/internal/playercall.c:
.text start:0x80019DA0 end:0x8001A0A0
.bss start:0x801943D0 end:0x80194490
jaudio_NES.o/dvdthread.c:
jaudio_NES/internal/dvdthread.c:
.text start:0x8001A0A0 end:0x8001AD78
.data start:0x800DA738 end:0x800DA758
.bss start:0x80194490 end:0x8019D0A8
.sbss start:0x8022A378 end:0x8022A3C8
jaudio_NES.o/rate.c:
jaudio_NES/internal/rate.c:
.text start:0x8001AD78 end:0x8001AD78
.sdata start:0x80229A08 end:0x80229A18
.sbss start:0x8022A3C8 end:0x8022A3D0
jaudio_NES.o/driver.c:
jaudio_NES/internal/driver.c:
.text start:0x8001AD78 end:0x8001AD80
.text start:0x8001AD80 end:0x8001B020
.text start:0x8001B020 end:0x8001D140
@@ -212,7 +212,7 @@ jaudio_NES.o/driver.c:
.sbss start:0x8022A3D0 end:0x8022A3D8
.sdata2 start:0x8022AD98 end:0x8022ADB8
jaudio_NES.o/memory.c:
jaudio_NES/internal/memory.c:
.text start:0x8001DA14 end:0x8001DA20
.text start:0x8001DA20 end:0x8001DBC0
.text start:0x8001DBC0 end:0x8001DE00
@@ -228,7 +228,7 @@ jaudio_NES.o/memory.c:
.sbss start:0x8022A3D8 end:0x8022A3E0
.sdata2 start:0x8022ADB8 end:0x8022AE00
jaudio_NES.o/system.c:
jaudio_NES/internal/system.c:
.text start:0x80020C2C end:0x80020C40
.text start:0x80020C40 end:0x80021300
.text start:0x80021300 end:0x80021B00
@@ -248,7 +248,7 @@ jaudio_NES.o/system.c:
.sbss start:0x8022A3E0 end:0x8022A3F0
.sdata2 start:0x8022AE00 end:0x8022AE10
jaudio_NES.o/sub_sys.c:
jaudio_NES/internal/sub_sys.c:
.text start:0x80024AB4 end:0x80024AC0
.text start:0x80024AC0 end:0x80024AC0
.text start:0x80024AC0 end:0x800250E0
@@ -260,30 +260,30 @@ jaudio_NES.o/sub_sys.c:
.sbss start:0x8022A3F0 end:0x8022A408
.sdata2 start:0x8022AE10 end:0x8022AE28
jaudio_NES.o/audiowork.c:
jaudio_NES/internal/audiowork.c:
.text start:0x800260F8 end:0x800260F8
.bss start:0x80220598 end:0x802298D8 align:4 common
.sbss start:0x8022A408 end:0x8022A420
jaudio_NES.o/audiotable.c:
jaudio_NES/internal/audiotable.c:
.text start:0x800260F8 end:0x800260F8
.data start:0x800DA850 end:0x800DDB28
jaudio_NES.o/os.c:
jaudio_NES/internal/os.c:
.text start:0x800260F8 end:0x80026100
.text start:0x80026100 end:0x80026160
.text start:0x80026160 end:0x80026160
.text start:0x80026160 end:0x80026160
.text start:0x80026160 end:0x800262E0
jaudio_NES.o/astest.c:
jaudio_NES/internal/astest.c:
.text start:0x800262E0 end:0x800263C8
jaudio_NES.o/audioconst.c:
jaudio_NES/internal/audioconst.c:
.text start:0x800263C8 end:0x800263C8
.data start:0x800DDB28 end:0x800DDB88
jaudio_NES.o/channel.c:
jaudio_NES/internal/channel.c:
.text start:0x800263C8 end:0x800263E0
.text start:0x800263E0 end:0x80026820
.text start:0x80026820 end:0x80026DE0
@@ -293,7 +293,7 @@ jaudio_NES.o/channel.c:
.text start:0x800280C0 end:0x800281A8
.sdata2 start:0x8022AE28 end:0x8022AE60
jaudio_NES.o/effect.c:
jaudio_NES/internal/effect.c:
.text start:0x800281A8 end:0x800281C0
.text start:0x800281C0 end:0x800284E0
.text start:0x800284E0 end:0x80028A40
@@ -302,7 +302,7 @@ jaudio_NES.o/effect.c:
.sdata start:0x80229A30 end:0x80229A38
.sdata2 start:0x8022AE60 end:0x8022AE90
jaudio_NES.o/track.c:
jaudio_NES/internal/track.c:
.text start:0x80028E2C end:0x80028E40
.text start:0x80028E40 end:0x80029080
.text start:0x80029080 end:0x80029A40
@@ -317,31 +317,31 @@ jaudio_NES.o/track.c:
.sbss start:0x8022A420 end:0x8022A428
.sdata2 start:0x8022AE90 end:0x8022AED0
jaudio_NES.o/dspboot.c:
jaudio_NES/internal/dspboot.c:
.text start:0x8002C900 end:0x8002C980
.text start:0x8002C980 end:0x8002CD00
.rodata start:0x800B4540 end:0x800B4560
.data start:0x800DDFC0 end:0x800DF9C0
.sdata2 start:0x8022AED0 end:0x8022AED8
jaudio_NES.o/dspproc.c:
jaudio_NES/internal/dspproc.c:
.text start:0x8002CD00 end:0x8002CFC0
.sdata start:0x80229A38 end:0x80229A40
jaudio_NES.o/ipldec.c:
jaudio_NES/internal/ipldec.c:
.text start:0x8002CFC0 end:0x8002D220
.bss start:0x802298D8 end:0x80229918 align:4 common
.sbss start:0x8022A428 end:0x8022A430
jaudio_NES.o/dsp_cardunlock.c:
jaudio_NES/internal/dsp_cardunlock.c:
.text start:0x8002D220 end:0x8002DA40
.rodata start:0x800B4560 end:0x800B45A0
jaudio_NES.o/dsp_GBAKey.c:
jaudio_NES/internal/dsp_GBAKey.c:
.text start:0x8002DA40 end:0x8002DBE0
.rodata start:0x800B45A0 end:0x800B45F8
jaudio_NES.o/driverinterface.c:
jaudio_NES/internal/driverinterface.c:
.text start:0x8002DBE0 end:0x8002F520
.data start:0x800DF9C0 end:0x800DFA58
.bss start:0x8019D0C0 end:0x801B1240
@@ -349,76 +349,76 @@ jaudio_NES.o/driverinterface.c:
.sbss start:0x8022A430 end:0x8022A440
.sdata2 start:0x8022AED8 end:0x8022AEF0
jaudio_NES.o/dspdriver.c:
jaudio_NES/internal/dspdriver.c:
.text start:0x8002F520 end:0x8002FDA0
.data start:0x800DFA58 end:0x800DFA80
.bss start:0x801B1240 end:0x801B1640
.sbss start:0x8022A440 end:0x8022A448
.sdata2 start:0x8022AEF0 end:0x8022AF00
jaudio_NES.o/dspinterface.c:
jaudio_NES/internal/dspinterface.c:
.text start:0x8002FDA0 end:0x80030480
.data start:0x800DFA80 end:0x800DFEE0
.bss start:0x801B1640 end:0x801B76C0
.sdata start:0x80229A48 end:0x80229A58
jaudio_NES.o/fxinterface.c:
jaudio_NES/internal/fxinterface.c:
.text start:0x80030480 end:0x800305B4
.data start:0x800DFEE0 end:0x800DFEF8
jaudio_NES.o/tables.c:
jaudio_NES/internal/tables.c:
.text start:0x800305B4 end:0x800305C0
.data start:0x800DFEF8 end:0x800E00F8
jaudio_NES.o/bankread.c:
jaudio_NES/internal/bankread.c:
.text start:0x800305C0 end:0x800309A0
.bss start:0x801B76C0 end:0x801B7AC0
jaudio_NES.o/waveread.c:
jaudio_NES/internal/waveread.c:
.text start:0x800309A0 end:0x80030EA0
.bss start:0x801B7AC0 end:0x801B82C0
.bss start:0x80229918 end:0x80229958 align:4 common
jaudio_NES.o/connect.c:
jaudio_NES/internal/connect.c:
.text start:0x80030EA0 end:0x80031540
.bss start:0x801B82C0 end:0x801B86C0
jaudio_NES.o/bankdrv.c:
jaudio_NES/internal/bankdrv.c:
.text start:0x80031540 end:0x80031CC0
.data start:0x800E00F8 end:0x800E0108
.sdata2 start:0x8022AF00 end:0x8022AF28
jaudio_NES.o/random.c:
jaudio_NES/internal/random.c:
.text start:0x80031CC0 end:0x80031D60
.sdata start:0x80229A58 end:0x80229A60
.sdata2 start:0x8022AF28 end:0x8022AF38
jaudio_NES.o/aramcall.c:
jaudio_NES/internal/aramcall.c:
.text start:0x80031D60 end:0x800320A0
.data start:0x800E0108 end:0x800E0148
.bss start:0x80229958 end:0x80229984 align:4 common
.sdata start:0x80229A60 end:0x80229A68
.sbss start:0x8022A448 end:0x8022A450
jaudio_NES.o/ja_calc.c:
jaudio_NES/internal/ja_calc.c:
.text start:0x800320A0 end:0x800322C0
.bss start:0x801B86C0 end:0x801B8AC8
.sdata2 start:0x8022AF38 end:0x8022AF70
jaudio_NES.o/fat.c:
jaudio_NES/internal/fat.c:
.text start:0x800322C0 end:0x80032720
.bss start:0x801B8AC8 end:0x801B96C8
.sbss start:0x8022A450 end:0x8022A458
jaudio_NES.o/cmdstack.c:
jaudio_NES/internal/cmdstack.c:
.text start:0x80032720 end:0x800328C0
.sbss start:0x8022A458 end:0x8022A468
jaudio_NES.o/heapctrl.c:
jaudio_NES/internal/heapctrl.c:
.text start:0x800328C0 end:0x80032CE0
.sbss start:0x8022A468 end:0x8022A470
jaudio_NES.o/jammain_2.c:
jaudio_NES/internal/jammain_2.c:
.text start:0x80032CE0 end:0x80033BA0
.text start:0x80033BA0 end:0x80034680
.text start:0x80034680 end:0x80034960
@@ -433,31 +433,31 @@ jaudio_NES.o/jammain_2.c:
.sbss start:0x8022A470 end:0x8022A480
.sdata2 start:0x8022AF70 end:0x8022AFC8
jaudio_NES.o/noteon.c:
jaudio_NES/internal/noteon.c:
.text start:0x80036B60 end:0x800370A0
.sdata2 start:0x8022AFC8 end:0x8022AFD0
jaudio_NES.o/seqsetup.c:
jaudio_NES/internal/seqsetup.c:
.text start:0x800370A0 end:0x80037DA0
.bss start:0x801B97E8 end:0x801FD440
.sbss start:0x8022A480 end:0x8022A490
.sdata2 start:0x8022AFD0 end:0x8022AFE0
jaudio_NES.o/midplay.c:
jaudio_NES/internal/midplay.c:
.text start:0x80037DA0 end:0x80037DA0
.data start:0x800E0408 end:0x800E0808
jaudio_NES.o/centcalc.c:
jaudio_NES/internal/centcalc.c:
.text start:0x80037DA0 end:0x80037E60
.data start:0x800E0808 end:0x800E0908
.sdata2 start:0x8022AFE0 end:0x8022AFF8
jaudio_NES.o/jamosc.c:
jaudio_NES/internal/jamosc.c:
.text start:0x80037E60 end:0x800382A0
.data start:0x800E0908 end:0x800E09F0
.sdata2 start:0x8022AFF8 end:0x8022B000
jaudio_NES.o/oneshot.c:
jaudio_NES/internal/oneshot.c:
.text start:0x800382A0 end:0x80038F80
.text start:0x80038F80 end:0x80039400
.text start:0x80039400 end:0x80039520
+41
View File
@@ -42,6 +42,46 @@ static void fIIH_ct(FTR_ACTOR* ftr_actor, u8* data) {
cKF_SkeletonInfo_R_play(keyf);
}
// Aus version reworks the treasure chest movement animation to process the state
// on the current frame instead of the previous frame's state.
#if VERSION >= VER_GAFU01_00
void fIIH_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data) {
cKF_SkeletonInfo_R_c* keyf = &ftr_actor->keyframe;
int state = cKF_SkeletonInfo_R_play(keyf);
if (state == cKF_STATE_STOPPED) {
keyf->frame_control.speed = 0.0f;
}
if ((ftr_actor->switch_changed_flag != FALSE) &&
(aMR_GetContactInfoLayer1()->contact_direction == aMR_CONTACT_DIR_FRONT) &&
(state == cKF_STATE_STOPPED)) {
ftr_actor->dynamic_work_s[0] = (ftr_actor->dynamic_work_s[0] + 1) & 1;
if (ftr_actor->dynamic_work_s[0] != FALSE) {
cKF_SkeletonInfo_R_init_standard_stop(keyf, &cKF_ba_r_int_ike_island_hako01, NULL);
keyf->frame_control.start_frame = 1.0f;
keyf->frame_control.end_frame = cKF_ba_r_int_ike_island_hako01.frames;
keyf->frame_control.speed = 0.5f;
sAdo_OngenTrgStart(0x16AU, &ftr_actor->position);
} else {
cKF_SkeletonInfo_R_init_standard_stop(keyf, &cKF_ba_r_int_ike_island_hako02, NULL);
keyf->frame_control.start_frame = 1.0f;
keyf->frame_control.end_frame = cKF_ba_r_int_ike_island_hako02.frames;
keyf->frame_control.speed = 0.5f;
sAdo_OngenTrgStart(0x16B, &ftr_actor->position);
}
}
if (aFTR_CAN_PLAY_SE(ftr_actor)) {
if (ftr_actor->dynamic_work_s[0] != 0) {
if (keyf->frame_control.current_frame > 25.0f) {
sAdo_OngenPos((u32)ftr_actor, 0x52, &ftr_actor->position);
}
} else if (keyf->frame_control.current_frame < 25.0f) {
sAdo_OngenPos((u32)ftr_actor, 0x52, &ftr_actor->position);
}
}
}
#else
void fIIH_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data) {
cKF_SkeletonInfo_R_c* keyf;
@@ -77,6 +117,7 @@ void fIIH_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data) {
keyf->frame_control.speed = 0.0f;
}
}
#endif
void fIIH_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data) {
GAME_PLAY* play = (GAME_PLAY*)game;
+137 -44
View File
@@ -1,3 +1,106 @@
// Aus version changed the naming to use their 'standard'
// It also updates the mv func to remove the animation frame logic.
// The dw function was updated to use the game frame instead of an internal counter.
#if VERSION >= VER_GAFU01_00
static void fKST_ct(FTR_ACTOR* ftr_actor, u8* data);
static void fKST_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data);
static void fKST_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data);
static void fKST_dt(FTR_ACTOR* ftr_actor, u8* data);
extern u8 int_kon_snowtv07a_TA_tex_txt[];
extern u8 int_kon_snowtv07b_TA_tex_txt[];
extern u8 int_kon_snowtv07c_TA_tex_txt[];
extern u8 int_kon_snowtv07d_TA_tex_txt[];
extern Gfx int_kon_snowtv_body_model[];
extern Gfx int_kon_snowtv_face_model[];
u8* fKST_on_anime_table[] = {
int_kon_snowtv07b_TA_tex_txt, int_kon_snowtv07b_TA_tex_txt, int_kon_snowtv07b_TA_tex_txt,
int_kon_snowtv07b_TA_tex_txt, int_kon_snowtv07b_TA_tex_txt, int_kon_snowtv07b_TA_tex_txt,
int_kon_snowtv07b_TA_tex_txt, int_kon_snowtv07b_TA_tex_txt, int_kon_snowtv07b_TA_tex_txt,
int_kon_snowtv07b_TA_tex_txt, int_kon_snowtv07c_TA_tex_txt, int_kon_snowtv07c_TA_tex_txt,
int_kon_snowtv07c_TA_tex_txt, int_kon_snowtv07c_TA_tex_txt, int_kon_snowtv07c_TA_tex_txt,
int_kon_snowtv07c_TA_tex_txt, int_kon_snowtv07c_TA_tex_txt, int_kon_snowtv07c_TA_tex_txt,
int_kon_snowtv07c_TA_tex_txt, int_kon_snowtv07c_TA_tex_txt, int_kon_snowtv07d_TA_tex_txt,
int_kon_snowtv07d_TA_tex_txt, int_kon_snowtv07d_TA_tex_txt, int_kon_snowtv07d_TA_tex_txt,
int_kon_snowtv07d_TA_tex_txt, int_kon_snowtv07d_TA_tex_txt, int_kon_snowtv07d_TA_tex_txt,
int_kon_snowtv07d_TA_tex_txt, int_kon_snowtv07d_TA_tex_txt, int_kon_snowtv07d_TA_tex_txt,
};
static void fKST_ct(FTR_ACTOR* ftr_actor, u8* data) {
}
static void fKST_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data) {
if (ftr_actor->switch_bit != FALSE) {
if (aFTR_CAN_PLAY_SE(ftr_actor)) {
sAdo_OngenPos((u32)ftr_actor, 0x2B, &ftr_actor->position);
}
}
if (ftr_actor->switch_changed_flag != FALSE) {
if (ftr_actor->switch_bit != FALSE) {
sAdo_OngenTrgStart(0x16, &ftr_actor->position);
} else {
sAdo_OngenTrgStart(0x17, &ftr_actor->position);
}
}
}
static void fKST_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data) {
GAME_PLAY* play = (GAME_PLAY*)game;
u8* anime;
u32 ctr_ofs;
OPEN_DISP(game->graph);
gSPMatrix(NEXT_POLY_OPA_DISP, _Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
if (ftr_actor->switch_bit != FALSE) {
if (ftr_actor->ctr_type == aFTR_CTR_TYPE_GAME_PLAY) {
ctr_ofs = play->game_frame;
} else {
ctr_ofs = game->frame_counter;
}
anime = fKST_on_anime_table[(ctr_ofs >> 1) % ARRAY_COUNT(fKST_on_anime_table)];
gSPSegment(NEXT_POLY_OPA_DISP, G_MWO_SEGMENT_8, anime);
} else {
gSPSegment(NEXT_POLY_OPA_DISP, G_MWO_SEGMENT_8, int_kon_snowtv07a_TA_tex_txt);
}
gSPDisplayList(NEXT_POLY_OPA_DISP, int_kon_snowtv_face_model);
gSPDisplayList(NEXT_POLY_OPA_DISP, int_kon_snowtv_body_model);
CLOSE_DISP(game->graph);
}
static void fKST_dt(FTR_ACTOR* ftr_actor, u8* data) {
}
static aFTR_vtable_c fKST_func = {
&fKST_ct, &fKST_mv, &fKST_dw, &fKST_dt, NULL,
};
aFTR_PROFILE iam_kon_snowtv = {
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
18.0f,
0.01f,
aFTR_SHAPE_TYPEA,
mCoBG_FTR_TYPEA,
0,
0,
0,
aFTR_INTERACTION_START_DISABLED,
&fKST_func,
};
#else
static void aKonsnowtv_ct(FTR_ACTOR* ftr_actor, u8* data);
static void aKonsnowtv_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data);
static void aKonsnowtv_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data);
@@ -24,80 +127,70 @@ u8* aKonsnowtv_on_anime[] = {
int_kon_snowtv07d_TA_tex_txt, int_kon_snowtv07d_TA_tex_txt, int_kon_snowtv07d_TA_tex_txt,
};
static void aKonsnowtv_ct(FTR_ACTOR* ftr_actor, u8* data){
static void aKonsnowtv_ct(FTR_ACTOR* ftr_actor, u8* data) {
}
static void aKonsnowtv_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data){
static void aKonsnowtv_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data) {
if(ftr_actor->switch_bit != FALSE){
if(aFTR_CAN_PLAY_SE(ftr_actor)){
sAdo_OngenPos((u32) ftr_actor, 0x2B, &ftr_actor->position);
if (ftr_actor->switch_bit != FALSE) {
if (aFTR_CAN_PLAY_SE(ftr_actor)) {
sAdo_OngenPos((u32)ftr_actor, 0x2B, &ftr_actor->position);
}
ftr_actor->tex_animation.frame++;
if(ftr_actor->tex_animation.frame >= 60 || ftr_actor->tex_animation.frame < 0){
if (ftr_actor->tex_animation.frame >= 60 || ftr_actor->tex_animation.frame < 0) {
ftr_actor->tex_animation.frame = 0;
}
}
if(ftr_actor->switch_changed_flag != FALSE){
if(ftr_actor->switch_bit != FALSE){
if (ftr_actor->switch_changed_flag != FALSE) {
if (ftr_actor->switch_bit != FALSE) {
sAdo_OngenTrgStart(0x16, &ftr_actor->position);
}
else{
} else {
sAdo_OngenTrgStart(0x17, &ftr_actor->position);
}
}
}
static void aKonsnowtv_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data) {
OPEN_DISP(game->graph);
gSPMatrix(NEXT_POLY_OPA_DISP,_Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
if(ftr_actor->switch_bit != FALSE){
gSPMatrix(NEXT_POLY_OPA_DISP, _Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
if (ftr_actor->switch_bit != FALSE) {
u8* anime = aKonsnowtv_on_anime[(s16)(ftr_actor->tex_animation.frame >> 1)];
gSPSegment(NEXT_POLY_OPA_DISP, G_MWO_SEGMENT_8, anime);
}
else{
} else {
gSPSegment(NEXT_POLY_OPA_DISP, G_MWO_SEGMENT_8, int_kon_snowtv07a_TA_tex_txt);
}
gSPDisplayList(NEXT_POLY_OPA_DISP,int_kon_snowtv_face_model);
gSPDisplayList(NEXT_POLY_OPA_DISP,int_kon_snowtv_body_model);
gSPDisplayList(NEXT_POLY_OPA_DISP, int_kon_snowtv_face_model);
gSPDisplayList(NEXT_POLY_OPA_DISP, int_kon_snowtv_body_model);
CLOSE_DISP(game->graph);
}
static void aKonsnowtv_dt(FTR_ACTOR* ftr_actor, u8* data){
static void aKonsnowtv_dt(FTR_ACTOR* ftr_actor, u8* data) {
}
static aFTR_vtable_c aKonsnowtv_func = {
&aKonsnowtv_ct,
&aKonsnowtv_mv,
&aKonsnowtv_dw,
&aKonsnowtv_dt,
NULL,
&aKonsnowtv_ct, &aKonsnowtv_mv, &aKonsnowtv_dw, &aKonsnowtv_dt, NULL,
};
aFTR_PROFILE iam_kon_snowtv = {
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
18.0f,
0.01f,
aFTR_SHAPE_TYPEA,
mCoBG_FTR_TYPEA,
0,
0,
0,
aFTR_INTERACTION_START_DISABLED,
&aKonsnowtv_func,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
18.0f,
0.01f,
aFTR_SHAPE_TYPEA,
mCoBG_FTR_TYPEA,
0,
0,
0,
aFTR_INTERACTION_START_DISABLED,
&aKonsnowtv_func,
};
#endif
+23 -11
View File
@@ -49,9 +49,11 @@ static void aNogFan_ct(FTR_ACTOR* ftr_actor, u8* data) {
}
static void aNogFan_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data) {
static int fan_kurukuru_data[] = {
1, 1, 1, 2, 2, 2, 2, 2, 3, 0xFFFFFFFF,
};
#if VERSION >= VER_GAFU01_00
static int fan_rot_frame_counter_dat[] = { 1, 1, 1, 2, 2, 2, 2, 2, 3, -1 };
#else
static int fan_kurukuru_data[] = { 1, 1, 1, 2, 2, 2, 2, 2, 3, -1 };
#endif
int num;
int idx;
@@ -61,27 +63,36 @@ static void aNogFan_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u
aNogFan_ChangeSwitch(ftr_actor);
if (ftr_actor->switch_bit != FALSE) {
f32 step = sqrtf(0.94999998807907);
add_calc(&ftr_actor->dynamic_work_f[0], 0.5f, 1.0f - step, 0.25f, 0.0005f);
add_calc(&ftr_actor->dynamic_work_f[0], 0.5f, CALC_EASE(0.05f), 0.25f, 0.0005f);
if (aFTR_CAN_PLAY_SE(ftr_actor)) {
sAdo_OngenPos((u32)ftr_actor, 1, &ftr_actor->position);
}
} else {
f32 step = sqrtf(0.94999998807907);
add_calc(&ftr_actor->dynamic_work_f[0], 0.0f, 1.0f - step, 0.25f, 0.0005f);
add_calc(&ftr_actor->dynamic_work_f[0], 0.0f, CALC_EASE(0.05f), 0.25f, 0.0005f);
}
keyf->frame_control.speed = ftr_actor->dynamic_work_f[0];
cKF_SkeletonInfo_R_play(keyf);
idx = 9.0f - (2.0f * (ftr_actor->dynamic_work_f[0] * 9.0f));
#if VERSION >= VER_GAFU01_00
if ((idx != ARRAY_COUNT(fan_rot_frame_counter_dat) - 1)) {
ftr_actor->dynamic_work_s[0]++;
num = fan_rot_frame_counter_dat[idx];
if ((ftr_actor->dynamic_work_s[0] >= num)) {
ftr_actor->dynamic_work_s[0] = 0;
ftr_actor->tex_animation.frame++;
if (ftr_actor->tex_animation.frame >= 6 || ftr_actor->tex_animation.frame < 0) {
ftr_actor->tex_animation.frame = 0;
}
}
}
#else
ftr_actor->dynamic_work_s[0]++;
num = fan_kurukuru_data[idx];
if ((num != -1) && (ftr_actor->dynamic_work_s[0] >= num)) {
ftr_actor->dynamic_work_s[0] = 0;
ftr_actor->tex_animation.frame++;
@@ -90,6 +101,7 @@ static void aNogFan_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u
ftr_actor->tex_animation.frame = 0;
}
}
#endif
}
static void aNogFan_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data) {
+2 -4
View File
@@ -17,7 +17,6 @@ u8* fNNB_texture_table[] = {
extern Gfx int_nog_nabe_fire_model[];
void fNNB_ct(FTR_ACTOR* ftr_actor, u8* data) {
cKF_SkeletonInfo_R_c* keyf;
u32 t;
keyf = &ftr_actor->keyframe;
cKF_SkeletonInfo_R_ct(keyf, &cKF_bs_r_int_nog_nabe, &cKF_ba_r_int_nog_nabe, ftr_actor->joint, ftr_actor->morph);
@@ -25,9 +24,8 @@ void fNNB_ct(FTR_ACTOR* ftr_actor, u8* data) {
keyf->frame_control.speed = 0.0f;
keyf->frame_control.start_frame = 1.0f;
keyf->frame_control.end_frame = cKF_ba_r_int_nog_nabe.frames;
t = 1 - ftr_actor->switch_bit;
ftr_actor->dynamic_work_s[0] = t > 0;
if (ftr_actor->dynamic_work_s[0] == 0) {
ftr_actor->dynamic_work_s[0] = ftr_actor->switch_bit != TRUE;
if (!ftr_actor->dynamic_work_s[0]) {
keyf->frame_control.current_frame = cKF_ba_r_int_nog_nabe.frames;
}
cKF_SkeletonInfo_R_play(keyf);
+4
View File
@@ -10,7 +10,11 @@ aFTR_PROFILE iam_sum_hal_table01 = {
NULL,
NULL,
NULL,
#if VERSION >= VER_GAFU01_00
33.0f,
#else
32.0f,
#endif
0.01f,
aFTR_SHAPE_TYPEC,
mCoBG_FTR_TYPEC,
+103
View File
@@ -1,3 +1,105 @@
// Aus version changed the naming to use their 'standard'
// It also updates the mv func to remove the animation frame logic.
// The dw function was updated to use the game frame instead of an internal counter.
#if VERSION >= VER_GAFU01_00
static void fST01_ct(FTR_ACTOR* ftr_actor, u8* data) {
// nothing
}
static void fST01_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data) {
if (ftr_actor->switch_bit) {
if (aFTR_CAN_PLAY_SE(ftr_actor)) {
sAdo_OngenPos((u32)ftr_actor, 5, &ftr_actor->position);
}
}
if (ftr_actor->switch_changed_flag) {
if (ftr_actor->switch_bit) {
sAdo_OngenTrgStart(0x16, &ftr_actor->position);
} else {
sAdo_OngenTrgStart(0x17, &ftr_actor->position);
}
}
}
extern u8 int_sum_tv01_front1_TA_tex_txt[];
extern u8 int_sum_tv01_front2_TA_tex_txt[];
extern u8 int_sum_tv01_front3_TA_tex_txt[];
extern u8 int_sum_tv01_front4_TA_tex_txt[];
extern Gfx int_sum_tv01_on_model[];
extern Gfx int_sum_tv01_off_model[];
static u8* fST01_on_anime[] = {
int_sum_tv01_front2_TA_tex_txt, int_sum_tv01_front2_TA_tex_txt, int_sum_tv01_front2_TA_tex_txt,
int_sum_tv01_front3_TA_tex_txt, int_sum_tv01_front3_TA_tex_txt, int_sum_tv01_front3_TA_tex_txt,
int_sum_tv01_front2_TA_tex_txt, int_sum_tv01_front2_TA_tex_txt, int_sum_tv01_front2_TA_tex_txt,
int_sum_tv01_front3_TA_tex_txt, int_sum_tv01_front3_TA_tex_txt, int_sum_tv01_front3_TA_tex_txt,
int_sum_tv01_front2_TA_tex_txt, int_sum_tv01_front2_TA_tex_txt, int_sum_tv01_front2_TA_tex_txt,
int_sum_tv01_front3_TA_tex_txt, int_sum_tv01_front3_TA_tex_txt, int_sum_tv01_front3_TA_tex_txt,
int_sum_tv01_front4_TA_tex_txt, int_sum_tv01_front4_TA_tex_txt, int_sum_tv01_front4_TA_tex_txt,
int_sum_tv01_front4_TA_tex_txt, int_sum_tv01_front2_TA_tex_txt, int_sum_tv01_front2_TA_tex_txt,
int_sum_tv01_front2_TA_tex_txt, int_sum_tv01_front2_TA_tex_txt, int_sum_tv01_front2_TA_tex_txt,
};
static void fST01_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data) {
GAME_PLAY* play = (GAME_PLAY*)game;
u32 ctr_ofs;
u8* tex;
OPEN_DISP(game->graph);
gSPMatrix(NEXT_POLY_OPA_DISP, _Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
if (ftr_actor->switch_bit) {
if (ftr_actor->ctr_type == aFTR_CTR_TYPE_GAME_PLAY) {
ctr_ofs = play->game_frame;
} else {
ctr_ofs = game->frame_counter;
}
tex = fST01_on_anime[(ctr_ofs >> 1) % ARRAY_COUNT(fST01_on_anime)];
gSPSegment(NEXT_POLY_OPA_DISP, G_MWO_SEGMENT_8, tex);
} else {
gSPSegment(NEXT_POLY_OPA_DISP, G_MWO_SEGMENT_8, int_sum_tv01_front1_TA_tex_txt);
}
gSPDisplayList(NEXT_POLY_OPA_DISP, int_sum_tv01_on_model);
gSPDisplayList(NEXT_POLY_OPA_DISP, int_sum_tv01_off_model);
CLOSE_DISP(game->graph);
}
static void fST01_dt(FTR_ACTOR* ftr_actor, u8* data) {
// nothing
}
static aFTR_vtable_c fST01_func = {
&fST01_ct, &fST01_mv, &fST01_dw, &fST01_dt, NULL,
};
aFTR_PROFILE iam_sum_tv01 = {
// clang-format off
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
18.0f,
0.01f,
aFTR_SHAPE_TYPEA,
mCoBG_FTR_TYPEA,
0,
0,
0,
aFTR_INTERACTION_START_DISABLED,
&fST01_func,
// clang-format on
};
#else
static void aSumTv01_ct(FTR_ACTOR* ftr_actor, u8* data) {
// nothing
}
@@ -92,3 +194,4 @@ aFTR_PROFILE iam_sum_tv01 = {
&aSumTv01_func,
// clang-format on
};
#endif
+104 -9
View File
@@ -1,8 +1,102 @@
static void aSumTv02_ct(FTR_ACTOR* ftr_actor, u8* data) {
// Aus version changed the naming to use their 'standard'
// It also updates the mv func to remove the animation frame logic.
// The dw function was updated to use the game frame instead of an internal counter.
#if VERSION >= VER_GAFU01_00
static void fST02_ct(FTR_ACTOR* ftr_actor, u8* data) {
// nothing
}
static void aSumTv02_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data) {
static void fST02_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data) {
if (ftr_actor->switch_bit) {
if (aFTR_CAN_PLAY_SE(ftr_actor)) {
sAdo_OngenPos((u32)ftr_actor, 4, &ftr_actor->position);
}
}
if (ftr_actor->switch_changed_flag) {
if (ftr_actor->switch_bit) {
sAdo_OngenTrgStart(0x16, &ftr_actor->position);
} else {
sAdo_OngenTrgStart(0x17, &ftr_actor->position);
}
}
}
extern u8 int_sum_tv02_front1_TA_tex_txt[];
extern u8 int_sum_tv02_front2_TA_tex_txt[];
extern u8 int_sum_tv02_front3_TA_tex_txt[];
extern Gfx int_sum_tv02_on_model[];
extern Gfx int_sum_tv02_off_model[];
static u8* fST02_on_anime[] = {
int_sum_tv02_front2_TA_tex_txt, int_sum_tv02_front2_TA_tex_txt, int_sum_tv02_front3_TA_tex_txt,
int_sum_tv02_front3_TA_tex_txt, int_sum_tv02_front3_TA_tex_txt,
};
static void fST02_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data) {
GAME_PLAY* play = (GAME_PLAY*)game;
u32 ctr_ofs;
u8* tex;
OPEN_DISP(game->graph);
gSPMatrix(NEXT_POLY_OPA_DISP, _Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
if (ftr_actor->switch_bit) {
if (ftr_actor->ctr_type == aFTR_CTR_TYPE_GAME_PLAY) {
ctr_ofs = play->game_frame;
} else {
ctr_ofs = game->frame_counter;
}
tex = fST02_on_anime[(ctr_ofs >> 1) % ARRAY_COUNT(fST02_on_anime)];
gSPSegment(NEXT_POLY_OPA_DISP, G_MWO_SEGMENT_8, tex);
} else {
gSPSegment(NEXT_POLY_OPA_DISP, G_MWO_SEGMENT_8, int_sum_tv02_front1_TA_tex_txt);
}
gSPDisplayList(NEXT_POLY_OPA_DISP, int_sum_tv02_on_model);
gSPDisplayList(NEXT_POLY_OPA_DISP, int_sum_tv02_off_model);
CLOSE_DISP(game->graph);
}
static void fST02_dt(FTR_ACTOR* ftr_actor, u8* data) {
// nothing
}
static aFTR_vtable_c fST02_func = {
&fST02_ct, &fST02_mv, &fST02_dw, &fST02_dt, NULL,
};
aFTR_PROFILE iam_sum_tv02 = {
// clang-format off
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
18.0f,
0.01f,
aFTR_SHAPE_TYPEB_0,
mCoBG_FTR_TYPEB_0,
0,
0,
0,
aFTR_INTERACTION_START_DISABLED,
&fST02_func,
// clang-format on
};
#else
static void fST02_ct(FTR_ACTOR* ftr_actor, u8* data) {
// nothing
}
static void fST02_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data) {
if (ftr_actor->switch_bit) {
if (aFTR_CAN_PLAY_SE(ftr_actor)) {
sAdo_OngenPos((u32)ftr_actor, 4, &ftr_actor->position);
@@ -30,19 +124,19 @@ extern u8 int_sum_tv02_front3_TA_tex_txt[];
extern Gfx int_sum_tv02_on_model[];
extern Gfx int_sum_tv02_off_model[];
static u8* aSumTv02_on_anime[] = {
static u8* fST02_on_anime[] = {
int_sum_tv02_front2_TA_tex_txt, int_sum_tv02_front2_TA_tex_txt, int_sum_tv02_front3_TA_tex_txt,
int_sum_tv02_front3_TA_tex_txt, int_sum_tv02_front3_TA_tex_txt,
};
static void aSumTv02_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data) {
static void fST02_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data) {
OPEN_DISP(game->graph);
gSPMatrix(NEXT_POLY_OPA_DISP, _Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
if (ftr_actor->switch_bit) {
int frame = (s16)(ftr_actor->tex_animation.frame >> 1);
u8* tex = aSumTv02_on_anime[frame];
u8* tex = fST02_on_anime[frame];
gSPSegment(NEXT_POLY_OPA_DISP, G_MWO_SEGMENT_8, tex);
} else {
@@ -55,12 +149,12 @@ static void aSumTv02_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game,
CLOSE_DISP(game->graph);
}
static void aSumTv02_dt(FTR_ACTOR* ftr_actor, u8* data) {
static void fST02_dt(FTR_ACTOR* ftr_actor, u8* data) {
// nothing
}
static aFTR_vtable_c aSumTv02_func = {
&aSumTv02_ct, &aSumTv02_mv, &aSumTv02_dw, &aSumTv02_dt, NULL,
static aFTR_vtable_c fST02_func = {
&fST02_ct, &fST02_mv, &fST02_dw, &fST02_dt, NULL,
};
aFTR_PROFILE iam_sum_tv02 = {
@@ -81,6 +175,7 @@ aFTR_PROFILE iam_sum_tv02 = {
0,
0,
aFTR_INTERACTION_START_DISABLED,
&aSumTv02_func,
&fST02_func,
// clang-format on
};
#endif
+4
View File
@@ -9,7 +9,11 @@ aFTR_PROFILE iam_tak_table02 = {
NULL,
NULL,
NULL,
#if VERSION >= VER_GAFU01_00
31.0f,
#else
30.0f,
#endif
0.01f,
aFTR_SHAPE_TYPEC,
mCoBG_FTR_TYPEC,